]> granicus.if.org Git - python/commitdiff
bpo-30806: Fix netrc.__repr__() format (GH-2491)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Fri, 3 Nov 2017 05:36:45 +0000 (22:36 -0700)
committerINADA Naoki <methane@users.noreply.github.com>
Fri, 3 Nov 2017 05:36:45 +0000 (14:36 +0900)
netrc file format doesn't support quotes and escapes.

See https://linux.die.net/man/5/netrc
(cherry picked from commit b24cd055ecb3eea9a15405a6ca72dafc739e6531)

Lib/netrc.py
Lib/test/test_netrc.py
Misc/NEWS.d/next/Library/2017-09-29.bpo-30806.lP5GrH.rst [new file with mode: 0644]

index bbb3d23b5433433ec89c07dfb6a7ddbd5027e9ec..1d90f5d900899c7449e9c20fac4e28dddeaaf8e3 100644 (file)
@@ -127,15 +127,15 @@ class netrc:
         rep = ""
         for host in self.hosts.keys():
             attrs = self.hosts[host]
-            rep = rep + "machine "+ host + "\n\tlogin " + repr(attrs[0]) + "\n"
+            rep += f"machine {host}\n\tlogin {attrs[0]}\n"
             if attrs[1]:
-                rep = rep + "account " + repr(attrs[1])
-            rep = rep + "\tpassword " + repr(attrs[2]) + "\n"
+                rep += f"\taccount {attrs[1]}\n"
+            rep += f"\tpassword {attrs[2]}\n"
         for macro in self.macros.keys():
-            rep = rep + "macdef " + macro + "\n"
+            rep += f"macdef {macro}\n"
             for line in self.macros[macro]:
-                rep = rep + line
-            rep = rep + "\n"
+                rep += line
+            rep += "\n"
         return rep
 
 if __name__ == '__main__':
index 60a3ec9565b4cf77f265dde72706a09590358e08..ca6f27d03c3afd273c381ef9fc00cd8f41772861 100644 (file)
@@ -1,7 +1,6 @@
-import netrc, os, unittest, sys, textwrap
+import netrc, os, unittest, sys, tempfile, textwrap
 from test import support
 
-temp_filename = support.TESTFN
 
 class NetrcTestCase(unittest.TestCase):
 
@@ -10,7 +9,8 @@ class NetrcTestCase(unittest.TestCase):
         mode = 'w'
         if sys.platform != 'cygwin':
             mode += 't'
-        with open(temp_filename, mode) as fp:
+        temp_fd, temp_filename = tempfile.mkstemp()
+        with os.fdopen(temp_fd, mode=mode) as fp:
             fp.write(test_data)
         self.addCleanup(os.unlink, temp_filename)
         return netrc.netrc(temp_filename)
@@ -24,6 +24,9 @@ class NetrcTestCase(unittest.TestCase):
                          ('log1', 'acct1', 'pass1'))
         self.assertEqual(nrc.hosts['default'], ('log2', None, 'pass2'))
 
+        nrc2 = self.make_nrc(nrc.__repr__())
+        self.assertEqual(nrc.hosts, nrc2.hosts)
+
     def test_macros(self):
         nrc = self.make_nrc("""\
             macdef macro1
diff --git a/Misc/NEWS.d/next/Library/2017-09-29.bpo-30806.lP5GrH.rst b/Misc/NEWS.d/next/Library/2017-09-29.bpo-30806.lP5GrH.rst
new file mode 100644 (file)
index 0000000..afad1b2
--- /dev/null
@@ -0,0 +1 @@
+Fix the string representation of a netrc object.