<div dir="ltr"># HG changeset patch<br># User Robert Stanca <<a href="mailto:robert.stanca7@gmail.com">robert.stanca7@gmail.com</a>><br># Date 1458910876 -7200<br>#      Fri Mar 25 15:01:16 2016 +0200<br># Node ID feaf4d124ea65bc42dd7100cb4f7f458f9e15713<br># Parent  335fd37954517b9c1ffce5eb60ec945d5fc99505<br>multiple: use absolute_import, print_function<br><br>diff -r 335fd3795451 -r feaf4d124ea6 tests/test-check-py3-compat.t<br>--- a/tests/test-check-py3-compat.t    Fri Mar 25 13:27:01 2016 +0200<br>+++ b/tests/test-check-py3-compat.t    Fri Mar 25 15:01:16 2016 +0200<br>@@ -53,13 +53,7 @@<br>   tests/svnxml.py not using absolute_import<br>   tests/test-atomictempfile.py not using absolute_import<br>   tests/test-doctest.py not using absolute_import<br>-  tests/test-hg-parseurl.py not using absolute_import<br>-  tests/test-hg-parseurl.py requires print_function<br>-  tests/test-hgweb-auth.py not using absolute_import<br>-  tests/test-hgweb-auth.py requires print_function<br>   tests/test-hgwebdir-paths.py not using absolute_import<br>-  tests/test-hybridencode.py not using absolute_import<br>-  tests/test-hybridencode.py requires print_function<br>   tests/test-lrucachedict.py not using absolute_import<br>   tests/test-lrucachedict.py requires print_function<br>   tests/test-manifest.py not using absolute_import<br>diff -r 335fd3795451 -r feaf4d124ea6 tests/test-hg-parseurl.py<br>--- a/tests/test-hg-parseurl.py    Fri Mar 25 13:27:01 2016 +0200<br>+++ b/tests/test-hg-parseurl.py    Fri Mar 25 15:01:16 2016 +0200<br>@@ -1,7 +1,10 @@<br>-from mercurial.hg import parseurl<br>+from __future__ import absolute_import , print_function<br>+from mercurial.hg import (<br>+    parseurl,<br>+)<br> <br> def testparse(url, branch=[]):<br>-    print '%s, branches: %r' % parseurl(url, branch)<br>+    print ('%s, branches: %r' % parseurl(url, branch))<br> <br> testparse('<a href="http://example.com/no/anchor">http://example.com/no/anchor</a>')<br> testparse('<a href="http://example.com/an/anchor#foo">http://example.com/an/anchor#foo</a>')<br>diff -r 335fd3795451 -r feaf4d124ea6 tests/test-hgweb-auth.py<br>--- a/tests/test-hgweb-auth.py    Fri Mar 25 13:27:01 2016 +0200<br>+++ b/tests/test-hgweb-auth.py    Fri Mar 25 15:01:16 2016 +0200<br>@@ -1,6 +1,10 @@<br>+from __future__ import absolute_import, print_function<br> from mercurial import demandimport; demandimport.enable()<br> import urllib2<br>-from mercurial import ui, util<br>+from mercurial import (<br>+      ui,<br>+      util,<br>+)<br> from mercurial import url<br> from mercurial.error import Abort<br> <br>@@ -21,7 +25,7 @@<br>                             for k in sorted(dict.iterkeys())]) + '}'<br> <br> def test(auth, urls=None):<br>-    print 'CFG:', dumpdict(auth)<br>+    print ('CFG:', dumpdict(auth))<br>     prefixes = set()<br>     for k in auth:<br>         prefixes.add(k.split('.', 1)[0])<br>@@ -34,15 +38,15 @@<br>     ui = writeauth(auth)<br> <br>     def _test(uri):<br>-        print 'URI:', uri<br>+        print ('URI:', uri)<br>         try:<br>             pm = url.passwordmgr(ui)<br>             u, authinfo = util.url(uri).authinfo()<br>             if authinfo is not None:<br>                 pm.add_password(*authinfo)<br>-            print '    ', pm.find_user_password('test', u)<br>+            print ('    ', pm.find_user_password('test', u))<br>         except Abort:<br>-            print 'abort'<br>+            print ('abort')<br> <br>     if not urls:<br>         urls = [<br>@@ -59,25 +63,25 @@<br>         _test(u)<br> <br> <br>-print '\n*** Test in-uri schemes\n'<br>+print ('\n*** Test in-uri schemes\n')<br> test({'x.prefix': '<a href="http://example.org">http://example.org</a>'})<br> test({'x.prefix': '<a href="https://example.org">https://example.org</a>'})<br> test({'x.prefix': '<a href="http://example.org">http://example.org</a>', 'x.schemes': 'https'})<br> test({'x.prefix': '<a href="https://example.org">https://example.org</a>', 'x.schemes': 'http'})<br> <br>-print '\n*** Test separately configured schemes\n'<br>+print ('\n*** Test separately configured schemes\n')<br> test({'x.prefix': '<a href="http://example.org">example.org</a>', 'x.schemes': 'http'})<br> test({'x.prefix': '<a href="http://example.org">example.org</a>', 'x.schemes': 'https'})<br> test({'x.prefix': '<a href="http://example.org">example.org</a>', 'x.schemes': 'http https'})<br> <br>-print '\n*** Test prefix matching\n'<br>+print ('\n*** Test prefix matching\n')<br> test({'x.prefix': '<a href="http://example.org/foo">http://example.org/foo</a>',<br>       'y.prefix': '<a href="http://example.org/bar'">http://example.org/bar'</a>})<br> test({'x.prefix': '<a href="http://example.org/foo">http://example.org/foo</a>',<br>       'y.prefix': '<a href="http://example.org/foo/bar'">http://example.org/foo/bar'</a>})<br> test({'x.prefix': '*', 'y.prefix': '<a href="https://example.org/bar'">https://example.org/bar'</a>})<br> <br>-print '\n*** Test user matching\n'<br>+print ('\n*** Test user matching\n')<br> test({'x.prefix': '<a href="http://example.org/foo">http://example.org/foo</a>',<br>       'x.username': None,<br>       'x.password': 'xpassword'},<br>@@ -98,10 +102,10 @@<br>      urls=['<a href="http://y@example.org/foo/bar'">http://y@example.org/foo/bar'</a>])<br> <br> def testauthinfo(fullurl, authurl):<br>-    print 'URIs:', fullurl, authurl<br>+    print ('URIs:', fullurl, authurl)<br>     pm = urllib2.HTTPPasswordMgrWithDefaultRealm()<br>     pm.add_password(*util.url(fullurl).authinfo()[1])<br>-    print pm.find_user_password('test', authurl)<br>+    print (pm.find_user_password('test', authurl))<br> <br>-print '\n*** Test urllib2 and util.url\n'<br>+print ('\n*** Test urllib2 and util.url\n')<br> testauthinfo('<a href="http://user@example.com:8080/foo">http://user@example.com:8080/foo</a>', '<a href="http://example.com:8080/foo">http://example.com:8080/foo</a>')<br>diff -r 335fd3795451 -r feaf4d124ea6 tests/test-hybridencode.py<br>--- a/tests/test-hybridencode.py    Fri Mar 25 13:27:01 2016 +0200<br>+++ b/tests/test-hybridencode.py    Fri Mar 25 15:01:16 2016 +0200<br>@@ -1,35 +1,36 @@<br>+from __future__ import absolute_import, print_function<br> from mercurial import store<br> <br> def show(s):<br>     # show test input<br>-    print "A = '%s'" % s.encode("string_escape")<br>+    print ("A = '%s'" % s.encode("string_escape"))<br> <br>     # show the result of the C implementation, if available<br>     h = store._pathencode(s)<br>-    print "B = '%s'" % h.encode("string_escape")<br>+    print ("B = '%s'" % h.encode("string_escape"))<br> <br>     # compare it with reference implementation in Python<br>     r = store._hybridencode(s, True)<br>     if h != r:<br>-        print "R = '%s'" % r.encode("string_escape")<br>-    print<br>+        print ("R = '%s'" % r.encode("string_escape"))<br>+    print ()<br> <br> show("data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&'()+,-.;=[]^`{}")<br> <br>-print "uppercase char X is encoded as _x"<br>+print ("uppercase char X is encoded as _x")<br> show("data/ABCDEFGHIJKLMNOPQRSTUVWXYZ")<br> <br>-print "underbar is doubled"<br>+print ("underbar is doubled")<br> show("data/_")<br> <br>-print "tilde is character-encoded"<br>+print ("tilde is character-encoded")<br> show("data/~")<br> <br>-print "characters in ASCII code range 1..31"<br>+print ("characters in ASCII code range 1..31")<br> show('data/\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f'<br>           '\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f')<br> <br>-print "characters in ASCII code range 126..255"<br>+print ("characters in ASCII code range 126..255")<br> show('data/\x7e\x7f'<br>           '\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f'<br>           '\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f')<br>@@ -40,18 +41,18 @@<br> show('data/\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef'<br>           '\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff')<br> <br>-print "Windows reserved characters"<br>+print ("Windows reserved characters")<br> show('data/less <, greater >, colon :, double-quote ", backslash \\'<br>            ', pipe |, question-mark ?, asterisk *')<br> <br>-print "encoding directories ending in .hg, .i or .d with '.hg' suffix"<br>+print ("encoding directories ending in .hg, .i or .d with '.hg' suffix")<br> show('data/x.h.i/x.hg/x.i/x.d/foo')<br> show('data/a.hg/a.i/a.d/foo')<br> show('data/au.hg/au.i/au.d/foo')<br> show('data/aux.hg/aux.i/aux.d/foo')<br> show('data/auxy.hg/auxy.i/auxy.d/foo')<br> <br>-print "but these are not encoded on *filenames*"<br>+print ("but these are not encoded on *filenames*")<br> show('data/foo/x.hg')<br> show('data/foo/x.i')<br> show('data/foo/x.d')<br>@@ -68,7 +69,7 @@<br> show('data/foo/auxy.i')<br> show('data/foo/auxy.d')<br> <br>-print "plain .hg, .i and .d directories have the leading dot encoded"<br>+print ("plain .hg, .i and .d directories have the leading dot encoded")<br> show('data/.hg/.i/.d/foo')<br> <br> show('data/aux.bla/bla.aux/prn/PRN/lpt/com3/nul/coma/foo.NUL/normal.c.i')<br>@@ -126,22 +127,22 @@<br> <br> show('data/a /au /aux /auxy /aux ')<br> <br>-print "largest unhashed path"<br>+print ("largest unhashed path")<br> show('data/123456789-123456789-123456789-123456789-123456789-'<br>           'unhashed--xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-12345')<br> <br>-print "shortest hashed path"<br>+print ("shortest hashed path")<br> show('data/123456789-123456789-123456789-123456789-123456789-'<br>           'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print "changing one char in part that's hashed away produces a different hash"<br>+print ("changing one char in part that's hashed away produces a different hash")<br> show('data/123456789-123456789-123456789-123456789-123456789-'<br>           'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxy-'<br>           '123456789-123456')<br> <br>-print "uppercase hitting length limit due to encoding"<br>+print ("uppercase hitting length limit due to encoding")<br> show('data/A23456789-123456789-123456789-123456789-123456789-'<br>           'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-12345')<br>@@ -149,7 +150,7 @@<br>           'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-12345')<br> <br>-print "compare with lowercase not hitting limit"<br>+print ("compare with lowercase not hitting limit")<br> show('data/a23456789-123456789-123456789-123456789-123456789-'<br>           'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-12345')<br>@@ -157,22 +158,22 @@<br>           'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-12345')<br> <br>-print "not hitting limit with any of these"<br>+print ("not hitting limit with any of these")<br> show("data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&'()+,-.;="<br>           "[]^`{}xxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-"<br>           "123456789-12345")<br> <br>-print "underbar hitting length limit due to encoding"<br>+print ("underbar hitting length limit due to encoding")<br> show('data/_23456789-123456789-123456789-123456789-123456789-'<br>           'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-12345')<br> <br>-print "tilde hitting length limit due to encoding"<br>+print ("tilde hitting length limit due to encoding")<br> show('data/~23456789-123456789-123456789-123456789-123456789-'<br>           'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-12345')<br> <br>-print "Windows reserved characters hitting length limit"<br>+print ("Windows reserved characters hitting length limit")<br> show('data/<23456789-123456789-123456789-123456789-123456789-'<br>           'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-12345')<br>@@ -198,47 +199,47 @@<br>           'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-12345')<br> <br>-print "initial space hitting length limit"<br>+print ("initial space hitting length limit")<br> show('data/ 23456789-123456789-123456789-123456789-123456789-'<br>           'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-12345')<br> <br>-print "initial dot hitting length limit"<br>+print ("initial dot hitting length limit")<br> show('data/.23456789-123456789-123456789-123456789-123456789-'<br>           'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-12345')<br> <br>-print "trailing space in filename hitting length limit"<br>+print ("trailing space in filename hitting length limit")<br> show('data/123456789-123456789-123456789-123456789-123456789-'<br>           'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-1234 ')<br> <br>-print "trailing dot in filename hitting length limit"<br>+print ("trailing dot in filename hitting length limit")<br> show('data/123456789-123456789-123456789-123456789-123456789-'<br>           'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-1234.')<br> <br>-print "initial space in directory hitting length limit"<br>+print ("initial space in directory hitting length limit")<br> show('data/ x/456789-123456789-123456789-123456789-123456789-'<br>           'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-12345')<br> <br>-print "initial dot in directory hitting length limit"<br>+print ("initial dot in directory hitting length limit")<br> show('data/.x/456789-123456789-123456789-123456789-123456789-'<br>           'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-12345')<br> <br>-print "trailing space in directory hitting length limit"<br>+print ("trailing space in directory hitting length limit")<br> show('data/x /456789-123456789-123456789-123456789-123456789-'<br>           'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-12345')<br> <br>-print "trailing dot in directory hitting length limit"<br>+print ("trailing dot in directory hitting length limit")<br> show('data/x./456789-123456789-123456789-123456789-123456789-'<br>           'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-12345')<br> <br>-print "with directories that need direncoding, hitting length limit"<br>+print ("with directories that need direncoding, hitting length limit")<br> show('data/x.i/56789-123456789-123456789-123456789-123456789-'<br>           'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-12345')<br>@@ -249,7 +250,7 @@<br>           'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-12345')<br> <br>-print "Windows reserved filenames, hitting length limit"<br>+print ("Windows reserved filenames, hitting length limit")<br> show('data/con/56789-123456789-123456789-123456789-123456789-'<br>           'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-12345')<br>@@ -275,100 +276,100 @@<br>           'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-12345')<br> <br>-print "non-reserved names, just not hitting limit"<br>+print ("non-reserved names, just not hitting limit")<br> show('data/123456789-123456789-123456789-123456789-123456789-'<br>           '/com/com0/lpt/lpt0/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-12345')<br> <br>-print "hashed path with largest untruncated 1st dir"<br>+print ("hashed path with largest untruncated 1st dir")<br> show('data/12345678/-123456789-123456789-123456789-123456789-'<br>           'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print "hashed path with smallest truncated 1st dir"<br>+print ("hashed path with smallest truncated 1st dir")<br> show('data/123456789/123456789-123456789-123456789-123456789-'<br>           'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print "hashed path with largest untruncated two dirs"<br>+print ("hashed path with largest untruncated two dirs")<br> show('data/12345678/12345678/9-123456789-123456789-123456789-'<br>           'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print "hashed path with smallest truncated two dirs"<br>+print ("hashed path with smallest truncated two dirs")<br> show('data/123456789/123456789/123456789-123456789-123456789-'<br>           'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print "hashed path with largest untruncated three dirs"<br>+print ("hashed path with largest untruncated three dirs")<br> show('data/12345678/12345678/12345678/89-123456789-123456789-'<br>           'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print "hashed path with smallest truncated three dirs"<br>+print ("hashed path with smallest truncated three dirs")<br> show('data/123456789/123456789/123456789/123456789-123456789-'<br>           'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print "hashed path with largest untruncated four dirs"<br>+print ("hashed path with largest untruncated four dirs")<br> show('data/12345678/12345678/12345678/12345678/789-123456789-'<br>           'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print "hashed path with smallest truncated four dirs"<br>+print ("hashed path with smallest truncated four dirs")<br> show('data/123456789/123456789/123456789/123456789/123456789-'<br>           'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print "hashed path with largest untruncated five dirs"<br>+print ("hashed path with largest untruncated five dirs")<br> show('data/12345678/12345678/12345678/12345678/12345678/6789-'<br>           'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print "hashed path with smallest truncated five dirs"<br>+print ("hashed path with smallest truncated five dirs")<br> show('data/123456789/123456789/123456789/123456789/123456789/'<br>           'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print "hashed path with largest untruncated six dirs"<br>+print ("hashed path with largest untruncated six dirs")<br> show('data/12345678/12345678/12345678/12345678/12345678/12345'<br>           '678/ed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print "hashed path with smallest truncated six dirs"<br>+print ("hashed path with smallest truncated six dirs")<br> show('data/123456789/123456789/123456789/123456789/123456789/'<br>           '123456789/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print "hashed path with largest untruncated seven dirs"<br>+print ("hashed path with largest untruncated seven dirs")<br> show('data/12345678/12345678/12345678/12345678/12345678/12345'<br>           '678/12345678/xxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print "hashed path with smallest truncated seven dirs"<br>+print ("hashed path with smallest truncated seven dirs")<br> show('data/123456789/123456789/123456789/123456789/123456789/'<br>           '123456789/123456789/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print "hashed path with largest untruncated eight dirs"<br>-print "(directory 8 is dropped because it hits _maxshortdirslen)"<br>+print ("hashed path with largest untruncated eight dirs")<br>+print ("(directory 8 is dropped because it hits _maxshortdirslen)")<br> show('data/12345678/12345678/12345678/12345678/12345678/12345'<br>           '678/12345678/12345678/xxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print "hashed path with smallest truncated eight dirs"<br>-print "(directory 8 is dropped because it hits _maxshortdirslen)"<br>+print ("hashed path with smallest truncated eight dirs")<br>+print ("(directory 8 is dropped because it hits _maxshortdirslen)")<br> show('data/123456789/123456789/123456789/123456789/123456789/'<br>           '123456789/123456789/123456789/xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print "hashed path with largest non-dropped directory 8"<br>-print "(just not hitting the _maxshortdirslen boundary)"<br>+print ("hashed path with largest non-dropped directory 8")<br>+print ("(just not hitting the _maxshortdirslen boundary)")<br> show('data/12345678/12345678/12345678/12345678/12345678/12345'<br>           '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print "...adding one truncated char to dir 1..7 won't drop dir 8"<br>+print ("...adding one truncated char to dir 1..7 won't drop dir 8")<br> show('data/12345678x/12345678/12345678/12345678/12345678/12345'<br>           '678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br>@@ -391,14 +392,14 @@<br>           '678/12345678x/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print "hashed path with shortest dropped directory 8"<br>-print "(just hitting the _maxshortdirslen boundary)"<br>+print ("hashed path with shortest dropped directory 8")<br>+print ("(just hitting the _maxshortdirslen boundary)")<br> show('data/12345678/12345678/12345678/12345678/12345678/12345'<br>           '678/12345678/123456/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print "hashed path that drops dir 8 due to dot or space at end is"<br>-print "encoded, and thus causing to hit _maxshortdirslen"<br>+print ("hashed path that drops dir 8 due to dot or space at end is")<br>+print ("encoded, and thus causing to hit _maxshortdirslen")<br> show('data/12345678/12345678/12345678/12345678/12345678/12345'<br>           '678/12345678/1234./-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br>@@ -406,7 +407,7 @@<br>           '678/12345678/1234 /-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print "... with dir 8 short enough for encoding"<br>+print ("... with dir 8 short enough for encoding")<br> show('data/12345678/12345678/12345678/12345678/12345678/12345'<br>           '678/12345678/12./xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br>@@ -414,9 +415,9 @@<br>           '678/12345678/12 /xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-123456')<br> <br>-print '''Extensions are replicated on hashed paths. Note that<br>+print ('''Extensions are replicated on hashed paths. Note that<br> we only get to encode files that end in .i or .d inside the<br>-store. Encoded filenames are thus bound in length.'''<br>+store. Encoded filenames are thus bound in length.''')<br> show('data/12345678/12345678/12345678/12345678/12345678/12345'<br>           '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'<br>           '123456789-12.345.i')<br>@@ -461,7 +462,7 @@<br>           'xxxxx-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwww'<br>           'wwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww.i')<br> <br>-print "paths outside data/ can be encoded"<br>+print ("paths outside data/ can be encoded")<br> show('metadata/dir/00manifest.i')<br> show('metadata/12345678/12345678/12345678/12345678/12345678/'<br>           '12345678/12345678/12345678/12345678/12345678/12345678/'<br></div>