From 882b2f9ab0f472a73046b2acc2780d5249fc7b35 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Apr 10 2019 08:19:27 +0000 Subject: Use raw strings for all regexes. These invalid escape sequences will break with Python 3.8. --- diff --git a/go2rpm/__main__.py b/go2rpm/__main__.py index 7fd9a98..d52de75 100644 --- a/go2rpm/__main__.py +++ b/go2rpm/__main__.py @@ -52,42 +52,41 @@ def rpmname(goipath): # lowercase and end with '/' goname = goipath.lower() + '/' # remove eventual protocol prefix - goname = re.sub("^http(s?)://", "", goname) + goname = re.sub(r"^http(s?)://", r"", goname) # remove eventual .git suffix - goname = re.sub("\.git/*", "", goname) + goname = re.sub(r"\.git/*", r"", goname) # remove eventual git. prefix - goname = re.sub("^git\.", "", goname) + goname = re.sub(r"^git\.", r"", goname) # remove FQDN root (.com, .org, etc) # will also remove vanity FQDNs such as "tools" - goname = re.sub("^([^/]+)\.([^\./]+)/", "\g<1>/", goname) + goname = re.sub(r"^([^/]+)\.([^\./]+)/", r"\g<1>/", goname) # add golang prefix goname = "golang-" + goname # special-case x.y.z number-strings as that’s an exception in our naming # guidelines - while re.search("(\d)\.(\d)", goname): - goname = re.sub("(\d)\.(\d)", "\g<1>:\g<2>", goname) + while re.search(r"(\d)\.(\d)", goname): + goname = re.sub(r"(\d)\.(\d)", r"\g<1>:\g<2>", goname) # replace various separators rpm does not like with - - goname = re.sub("[\._/\-]+", "-", goname) + goname = re.sub(r"[\._/\-]+", r"-", goname) # because of the Azure sdk - goname = re.sub("\-for\-go\-", "-", goname) + goname = re.sub(r"\-for\-go\-", r"-", goname) # Tokenize along - separators and remove duplicates to avoid # golang-foo-foo-bar-foo names result = "" tokens = {} tokens["go"] = True - pattern = re.compile("[^\-]+") for token in goname.split('-'): if token not in tokens: result = result + "-" + token tokens[token] = True # reassemble the string, restore x.y.z runs, convert the vx.y.z # Go convention to x.y.z as prefered in rpm naming - result = re.sub("^-", "", result) - result = re.sub("-$", "", result) - result = re.sub(":", ".", result) + result = re.sub(r"^-", r"", result) + result = re.sub(r"-$", r"", result) + result = re.sub(r":", r".", result) # some projects have a name that end up in a number, and *also* add release # numbers on top of it, keep a - prefix before version strings - result = re.sub("\-v([\.\d])", "-\g<1>", result) + result = re.sub(r"\-v([\.\d])", r"-\g<1>", result) return result @@ -131,7 +130,15 @@ def get_license_files(goipath): license_files = [] path = os.path.join(GIT_CACHEDIR, *get_repo_name(goipath)) exclude = set(['vendor', 'example', 'examples', 'internal', 'Godeps', 'testdata', '_testdata', '.github']) - matcher = re.compile("(COPYING|COPYING[\.\-].*|COPYRIGHT|COPYRIGHT[\.\-].*|EULA|EULA[\.\-].*|licen[cs]e|licen[cs]e.*|LICEN[CS]E|LICEN[CS]E[\.\-].*|.*[\.\-]LICEN[CS]E.*|NOTICE|NOTICE[\.\-].*|PATENTS|PATENTS[\.\-].*|UNLICEN[CS]E|UNLICEN[CS]E[\.\-].*|agpl[\.\-].*|gpl[\.\-].*|lgpl[\.\-].*|AGPL-.*[0-9].*|APACHE-.*[0-9].*|BSD-.*[0-9].*|CC-BY-.*|GFDL-.*[0-9].*|GNU-.*[0-9].*|GPL-.*[0-9].*|LGPL-.*[0-9].*|MIT-.*[0-9].*|MPL-.*[0-9].*|OFL-.*[0-9].*)") + matcher = re.compile( + r"(COPYING|COPYING[\.\-].*|COPYRIGHT|COPYRIGHT[\.\-].*|" + r"EULA|EULA[\.\-].*|licen[cs]e|licen[cs]e.*|LICEN[CS]E|" + r"LICEN[CS]E[\.\-].*|.*[\.\-]LICEN[CS]E.*|NOTICE|NOTICE[\.\-].*|" + r"PATENTS|PATENTS[\.\-].*|UNLICEN[CS]E|UNLICEN[CS]E[\.\-].*|" + r"agpl[\.\-].*|gpl[\.\-].*|lgpl[\.\-].*|AGPL-.*[0-9].*|" + r"APACHE-.*[0-9].*|BSD-.*[0-9].*|CC-BY-.*|GFDL-.*[0-9].*|" + r"GNU-.*[0-9].*|GPL-.*[0-9].*|LGPL-.*[0-9].*|MIT-.*[0-9].*|" + r"MPL-.*[0-9].*|OFL-.*[0-9].*)") for root, dirs, files in os.walk(path, topdown=True): dirs[:] = [d for d in dirs if d not in exclude] for f in files: @@ -144,8 +151,19 @@ def get_doc_files(goipath): doc_files = [] path = os.path.join(GIT_CACHEDIR, *get_repo_name(goipath)) exclude = set(['vendor', 'example', 'examples', 'internal', 'Godeps', 'testdata', '_testdata', '.github']) - matcher = re.compile("(.*\.md|.*\.markdown|.*\.mdown|.*\.mkdn|.*\.rst|.*\.txt|AUTHORS|AUTHORS[\.\-].*|CONTRIBUTORS|CONTRIBUTORS[\.\-].*|README|README[\.\-].*|CHANGELOG|CHANGELOG[\.\-].*|TODO|TODO[\.\-].*)", re.IGNORECASE) - licensesex = re.compile("(COPYING|COPYING[\.\-].*|COPYRIGHT|COPYRIGHT[\.\-].*|EULA|EULA[\.\-].*|licen[cs]e|licen[cs]e.*|LICEN[CS]E|LICEN[CS]E[\.\-].*|.*[\.\-]LICEN[CS]E.*|NOTICE|NOTICE[\.\-].*|PATENTS|PATENTS[\.\-].*|UNLICEN[CS]E|UNLICEN[CS]E[\.\-].*|agpl[\.\-].*|gpl[\.\-].*|lgpl[\.\-].*|AGPL-.*[0-9].*|APACHE-.*[0-9].*|BSD-.*[0-9].*|CC-BY-.*|GFDL-.*[0-9].*|GNU-.*[0-9].*|GPL-.*[0-9].*|LGPL-.*[0-9].*|MIT-.*[0-9].*|MPL-.*[0-9].*|OFL-.*[0-9].*)") + matcher = re.compile( + r"(.*\.md|.*\.markdown|.*\.mdown|.*\.mkdn|.*\.rst|.*\.txt|AUTHORS|" + r"AUTHORS[\.\-].*|CONTRIBUTORS|CONTRIBUTORS[\.\-].*|README|" + r"README[\.\-].*|CHANGELOG|CHANGELOG[\.\-].*|TODO|TODO[\.\-].*)", + re.IGNORECASE) + licensesex = re.compile( + r"(COPYING|COPYING[\.\-].*|COPYRIGHT|COPYRIGHT[\.\-].*|EULA|" + r"EULA[\.\-].*|licen[cs]e|licen[cs]e.*|LICEN[CS]E|LICEN[CS]E[\.\-].*|" + r".*[\.\-]LICEN[CS]E.*|NOTICE|NOTICE[\.\-].*|PATENTS|PATENTS[\.\-].*|" + r"UNLICEN[CS]E|UNLICEN[CS]E[\.\-].*|agpl[\.\-].*|gpl[\.\-].*|" + r"lgpl[\.\-].*|AGPL-.*[0-9].*|APACHE-.*[0-9].*|BSD-.*[0-9].*|CC-BY-.*|" + r"GFDL-.*[0-9].*|GNU-.*[0-9].*|GPL-.*[0-9].*|LGPL-.*[0-9].*|" + r"MIT-.*[0-9].*|MPL-.*[0-9].*|OFL-.*[0-9].*)") for root, dirs, files in os.walk(path, topdown=True): dirs[:] = [d for d in dirs if d not in exclude] for f in files: @@ -194,7 +212,7 @@ def normalize_description(description): description = description.capitalize() else: return None - if not re.search("(\.|!)$", description): + if not re.search(r"(\.|!)$", description): description = description + "." return description @@ -348,10 +366,11 @@ def main(): if args.goipath is None: parser.error("required import path argument missing") else: - goipath = re.sub("^http(s?)://", "", args.goipath) + goipath = re.sub(r"^http(s?)://", r"", args.goipath) goipath = goipath.strip('/') - if not re.search("^(github.com|gitlab.com|bitbucket.org)", goipath) and args.forge is None: + if (not re.search(r"^(github.com|gitlab.com|bitbucket.org)", goipath) + and args.forge is None): parser.error("forge URL is required for import path other than github, gitlab and bitbucket") if args.forge is None: