Commit ce1d819b authored by Reinout van Rees's avatar Reinout van Rees Committed by GitHub

Merge pull request #480 from buildout/fix-open-mode

Avoid DeprecationWarning: 'U' mode is deprecated (Version 2)
parents 9418699c 780af6a6
...@@ -1467,15 +1467,20 @@ def _pyscript(path, dest, rsetup, initialization=''): ...@@ -1467,15 +1467,20 @@ def _pyscript(path, dest, rsetup, initialization=''):
generated.append(dest) generated.append(dest)
return generated return generated
if sys.version_info[0] < 3:
universal_newline_option = ", 'U'"
else:
universal_newline_option = ''
py_script_template = script_header + '''\ py_script_template = script_header + '''\
%(relative_paths_setup)s %%(relative_paths_setup)s
import sys import sys
sys.path[0:0] = [ sys.path[0:0] = [
%(path)s %%(path)s
] ]
%(initialization)s %%(initialization)s
_interactive = True _interactive = True
if len(sys.argv) > 1: if len(sys.argv) > 1:
...@@ -1496,13 +1501,13 @@ if len(sys.argv) > 1: ...@@ -1496,13 +1501,13 @@ if len(sys.argv) > 1:
sys.argv[:] = _args sys.argv[:] = _args
__file__ = _args[0] __file__ = _args[0]
del _options, _args del _options, _args
with open(__file__, 'U') as __file__f: with open(__file__%s) as __file__f:
exec(compile(__file__f.read(), __file__, "exec")) exec(compile(__file__f.read(), __file__, "exec"))
if _interactive: if _interactive:
del _interactive del _interactive
__import__("code").interact(banner="", local=globals()) __import__("code").interact(banner="", local=globals())
''' ''' % universal_newline_option
runsetup_template = """ runsetup_template = """
import sys import sys
...@@ -1516,9 +1521,9 @@ __file__ = %%(__file__)r ...@@ -1516,9 +1521,9 @@ __file__ = %%(__file__)r
os.chdir(%%(setupdir)r) os.chdir(%%(setupdir)r)
sys.argv[0] = %%(setup)r sys.argv[0] = %%(setup)r
with open(%%(setup)r, 'U') as f: with open(%%(setup)r%s) as f:
exec(compile(f.read(), %%(setup)r, 'exec')) exec(compile(f.read(), %%(setup)r, 'exec'))
""" % setuptools_path """ % (setuptools_path, universal_newline_option)
class VersionConflict(zc.buildout.UserError): class VersionConflict(zc.buildout.UserError):
......
...@@ -132,18 +132,6 @@ def system(command, input='', with_exit_code=False): ...@@ -132,18 +132,6 @@ def system(command, input='', with_exit_code=False):
# http://bugs.python.org/issue19884 # http://bugs.python.org/issue19884
env = dict(os.environ, TERM='dumb') env = dict(os.environ, TERM='dumb')
# Beginning in Python 3.4, 'U' mode to open() is deprecated.
# Python 3.7 changes the way deprecations are shown for main
# modules, and introduces $PYTHONDEVMODE which turns on warnigs in
# more places. If that's done, this leads many of our doctests to
# break; some code path through executing setup.py does this, but
# it's not in our code. Unfortunately, normalizing this printed
# line away doesn't work, it just produces a blank line. We resort
# to turning that warning off.
warnings = env.get('PYTHONWARNINGS', '')
env['PYTHONWARNINGS'] = "ignore:'U' mode is deprecated:DeprecationWarning::," + warnings
p = subprocess.Popen(command, p = subprocess.Popen(command,
shell=True, shell=True,
stdin=subprocess.PIPE, stdin=subprocess.PIPE,
...@@ -606,6 +594,9 @@ normalize_exception_type_for_python_2_and_3 = ( ...@@ -606,6 +594,9 @@ normalize_exception_type_for_python_2_and_3 = (
re.compile(r'^(\w+\.)*([A-Z][A-Za-z0-9]+Error: )'), re.compile(r'^(\w+\.)*([A-Z][A-Za-z0-9]+Error: )'),
'\2') '\2')
normalize_open_in_generated_script = (
re.compile(r"open\(__file__, 'U'\)"), 'open(__file__)')
not_found = (re.compile(r'Not found: [^\n]+/(\w|\.)+/\r?\n'), '') not_found = (re.compile(r'Not found: [^\n]+/(\w|\.)+/\r?\n'), '')
# Setuptools now pulls in dependencies when installed. # Setuptools now pulls in dependencies when installed.
......
...@@ -3730,6 +3730,7 @@ def test_suite(): ...@@ -3730,6 +3730,7 @@ def test_suite():
zc.buildout.testing.normalize_endings, zc.buildout.testing.normalize_endings,
zc.buildout.testing.normalize_egg_py, zc.buildout.testing.normalize_egg_py,
zc.buildout.testing.normalize_exception_type_for_python_2_and_3, zc.buildout.testing.normalize_exception_type_for_python_2_and_3,
zc.buildout.testing.normalize_open_in_generated_script,
zc.buildout.testing.adding_find_link, zc.buildout.testing.adding_find_link,
zc.buildout.testing.not_found, zc.buildout.testing.not_found,
normalize_bang, normalize_bang,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment