From 882b2f9ab0f472a73046b2acc2780d5249fc7b35 Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
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:

