Received: by 2002:a05:7412:40d:b0:e2:908c:2ebd with SMTP id 13csp370363rdf; Tue, 21 Nov 2023 05:14:54 -0800 (PST) X-Google-Smtp-Source: AGHT+IFqsMzaWGr93d6ONfzD+1XwyU4/vTNxjwlD/JTeGysgz6J9pWqNG50DQQCAEWABdjkle4ul X-Received: by 2002:a05:6a21:3293:b0:17e:498c:bff7 with SMTP id yt19-20020a056a21329300b0017e498cbff7mr3621918pzb.7.1700572494183; Tue, 21 Nov 2023 05:14:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700572494; cv=none; d=google.com; s=arc-20160816; b=QQNqJ3E5cgQicAjondPuP/j2Qbwrx1xjBjADV8LQpOSPN+YssN4ZSzDeabdENiSznK oPa3rnMZnliqrtkXOJ0mHCBgB3pmlQOHO8bFbcFaK5VdYdB5glKiUv1Tog8VHmdx/rUA SRdyl8tA++L9zl1nNDO+R48uEdXkv+nFntovKMRzhdnnGCzCumE3F2CNhAusG021N5rF 6+BdxTXeesfHDGryPc1KGLojMGc0bXs3rq91pww3XzP804YMOYY6bIs5VqXy1AXTqx66 2SRI/Xl/g7eYro7ipfJtRldQdAodcRABdsw7JE08uT/rD0i7xnIyOlradZ5oCNk6/amH JVWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=3QaP15pRDdwBouVsaemtXpSOn6VWtFG6N/6KU/m7824=; fh=plyRJjO4y4Y5iC62wKPwnHTYzBFyys4OpxbpJM+DjDI=; b=ij/cD++WNtnXZrOnJQQv8ctByWK6UGoAH7vQFPRSKNRU5wVkly+s/78kgfbNcBCL4V QDGct00kRYZ/LrXcJO6t19bGiwHgo5q3h87NO5DlmEGnowLg3FOAjv7oxAmPUNtM04u0 PaQE8Dc+8HEwobB0VLq6Wo0fpnSziW7eQfPt3v9Pf078wPyFt+Z+KXexr/QDVl8Jqrow Uu+UWRHcdk7jtx6JPMHZ5mevTTMwZgpAMcxqndgEx57Wzqk/tEl4nBvTXgR0eMBqjJ/+ 2whO2Raj6xT+/Kxhb/NDhIuiA+qi8fgHB6FPDj5WNMAx/9qDNGS5QxQpRQLp2IJcw6mL HlqA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=GDpQK5zo; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id e13-20020a631e0d000000b005bd0f2f41ddsi10221351pge.206.2023.11.21.05.14.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Nov 2023 05:14:54 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=GDpQK5zo; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id F26848116E6C; Tue, 21 Nov 2023 05:14:52 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233970AbjKUNOr (ORCPT + 99 others); Tue, 21 Nov 2023 08:14:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33864 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233922AbjKUNOq (ORCPT ); Tue, 21 Nov 2023 08:14:46 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 589D81A1 for ; Tue, 21 Nov 2023 05:14:42 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7789EC433C8; Tue, 21 Nov 2023 13:14:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1700572481; bh=sde8UH1s+S4ZJXYAO43tWVBaZyVwRo176bP2DijjLOI=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=GDpQK5zo9UpeD6GkT0WYJk0auFna8sxeBC4CdhCQMBp49+MoYKwjHAGpgOvsAEPNg fCqE40vgBm7by3wYeVxKARR21bCTugAiNX2my51TLcaJ8QbOzU3jgIXvfLmsa57jYm v+BfyGsD59pQoFcD2opzjY5rtDJlYlFmfJ9VdHeeVNi5QaXEh0d1+ZLsp7ovuPxjXs staHh5fbiivWv9bHPX3P1x1e2LwXdkAyWW4yLs6UymSS/rvQcqPvPoBaeW4dxD9OOc bY5HZ9TPwh3nbaDJ7/umMYtNYjbvzP9hWLeM0duhJiie4u33DwomW9AATV9/TQLV/7 3GZuKf/TNC4Iw== Received: by quaco.ghostprotocols.net (Postfix, from userid 1000) id 0C86440094; Tue, 21 Nov 2023 10:14:39 -0300 (-03) Date: Tue, 21 Nov 2023 10:14:38 -0300 From: Arnaldo Carvalho de Melo To: Adrian Hunter Cc: Benjamin Gray , linux-ia64@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, llvm@lists.linux.dev, linux-pm@vger.kernel.org, bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, Jonathan Corbet , Ian Abbott , H Hartley Sweeten , Nathan Chancellor , Nick Desaulniers , Tom Rix , Jan Kiszka , Kieran Bingham , Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , linux-perf-users@vger.kernel.org, Todd E Brandt , Andrii Nakryiko , Mykola Lysenko , Shuah Khan Subject: Re: [PATCH v2 5/7] tools/perf: fix Python string escapes Message-ID: References: <20230912060801.95533-1-bgray@linux.ibm.com> <20230912060801.95533-6-bgray@linux.ibm.com> <340eae90-d270-5e52-4982-a67459bc46dd@intel.com> <592b8fd2-bfe3-0f8d-2814-d8340bbc75ee@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <592b8fd2-bfe3-0f8d-2814-d8340bbc75ee@intel.com> X-Url: http://acmel.wordpress.com X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Tue, 21 Nov 2023 05:14:53 -0800 (PST) Em Wed, Sep 13, 2023 at 08:53:26AM +0300, Adrian Hunter escreveu: > On 13/09/23 03:26, Benjamin Gray wrote: > > On 12/9/23 8:56 pm, Adrian Hunter wrote: > >> On 12/09/23 09:07, Benjamin Gray wrote: > >>> diff --git a/tools/perf/pmu-events/jevents.py b/tools/perf/pmu-events/jevents.py > >>> index a7e88332276d..980f080a5a2c 100755 > >>> --- a/tools/perf/pmu-events/jevents.py > >>> +++ b/tools/perf/pmu-events/jevents.py > >>> @@ -83,7 +83,7 @@ def c_len(s: str) -> int: > >>> ??? """Return the length of s a C string > >>> ? ??? This doesn't handle all escape characters properly. It first assumes > >>> -? all \ are for escaping, it then adjusts as it will have over counted > >>> +? all \\ are for escaping, it then adjusts as it will have over counted > >> > >> It looks like the whole string should be a raw string > >> > > ... > >>> -??????????????? s = value.replace("%", "\%") > >>> -??????????????? s = s.replace("_", "\_") > >>> +??????????????? s = value.replace("%", "\\%") > >>> +??????????????? s = s.replace("_", "\\_") > >> > >> Raw strings seem more readable, so could be > >> used here too > > > > Yeah, sounds good. I normally use r strings only for regex, but there shouldn't be any ambiguity here (it might have been misleading if the search argument to replace looked like a regex). > > > > Having the docstring be an r string is a good catch. There's probably a few like that in the kernel, but finding them is a little more complicated because they might be 'valid' syntax (e.g., the '\000' just becomes a null byte. This series is focused on the syntax errors though, so I'll just leave it be. > > > > How is the following? > > --- > > Subject: [PATCH] tools/perf: fix Python string escapes > > > > Python 3.6 introduced a DeprecationWarning for invalid escape sequences. > > This is upgraded to a SyntaxWarning in Python 3.12, and will eventually > > be a syntax error. > > > > Fix these now to get ahead of it before it's an error. > > > > Signed-off-by: Benjamin Gray > > Acked-by: Adrian Hunter applied the tools/perf one. - Arnaldo > > --- > > ?tools/perf/pmu-events/jevents.py???????????????? | 2 +- > > ?tools/perf/scripts/python/arm-cs-trace-disasm.py | 4 ++-- > > ?tools/perf/scripts/python/compaction-times.py??? | 2 +- > > ?tools/perf/scripts/python/exported-sql-viewer.py | 4 ++-- > > ?4 files changed, 6 insertions(+), 6 deletions(-) > > > > diff --git a/tools/perf/pmu-events/jevents.py b/tools/perf/pmu-events/jevents.py > > index a7e88332276d..1b4519333a28 100755 > > --- a/tools/perf/pmu-events/jevents.py > > +++ b/tools/perf/pmu-events/jevents.py > > @@ -80,7 +80,7 @@ def file_name_to_table_name(prefix: str, parents: Sequence[str], > > > > > > ?def c_len(s: str) -> int: > > -? """Return the length of s a C string > > +? r"""Return the length of s a C string > > > > ?? This doesn't handle all escape characters properly. It first assumes > > ?? all \ are for escaping, it then adjusts as it will have over counted > > diff --git a/tools/perf/scripts/python/arm-cs-trace-disasm.py b/tools/perf/scripts/python/arm-cs-trace-disasm.py > > index d59ff53f1d94..de58991c78bb 100755 > > --- a/tools/perf/scripts/python/arm-cs-trace-disasm.py > > +++ b/tools/perf/scripts/python/arm-cs-trace-disasm.py > > @@ -45,8 +45,8 @@ parser = OptionParser(option_list=option_list) > > ?# Initialize global dicts and regular expression > > ?disasm_cache = dict() > > ?cpu_data = dict() > > -disasm_re = re.compile("^\s*([0-9a-fA-F]+):") > > -disasm_func_re = re.compile("^\s*([0-9a-fA-F]+)\s.*:") > > +disasm_re = re.compile(r"^\s*([0-9a-fA-F]+):") > > +disasm_func_re = re.compile(r"^\s*([0-9a-fA-F]+)\s.*:") > > ?cache_size = 64*1024 > > > > ?glb_source_file_name??? = None > > diff --git a/tools/perf/scripts/python/compaction-times.py b/tools/perf/scripts/python/compaction-times.py > > index 2560a042dc6f..9401f7c14747 100644 > > --- a/tools/perf/scripts/python/compaction-times.py > > +++ b/tools/perf/scripts/python/compaction-times.py > > @@ -260,7 +260,7 @@ def pr_help(): > > > > ?comm_re = None > > ?pid_re = None > > -pid_regex = "^(\d*)-(\d*)$|^(\d*)$" > > +pid_regex = r"^(\d*)-(\d*)$|^(\d*)$" > > > > ?opt_proc = popt.DISP_DFL > > ?opt_disp = topt.DISP_ALL > > diff --git a/tools/perf/scripts/python/exported-sql-viewer.py b/tools/perf/scripts/python/exported-sql-viewer.py > > index 13f2d8a81610..78763531fe5a 100755 > > --- a/tools/perf/scripts/python/exported-sql-viewer.py > > +++ b/tools/perf/scripts/python/exported-sql-viewer.py > > @@ -677,8 +677,8 @@ class CallGraphModelBase(TreeModel): > > ???????????? #?? sqlite supports GLOB (text only) which uses * and ? and is case sensitive > > ???????????? if not self.glb.dbref.is_sqlite3: > > ???????????????? # Escape % and _ > > -??????????????? s = value.replace("%", "\%") > > -??????????????? s = s.replace("_", "\_") > > +??????????????? s = value.replace("%", r"\%") > > +??????????????? s = s.replace("_", r"\_") > > ???????????????? # Translate * and ? into SQL LIKE pattern characters % and _ > > ???????????????? trans = string.maketrans("*?", "%_") > > ???????????????? match = " LIKE '" + str(s).translate(trans) + "'" > -- - Arnaldo