From e7f9dab06dc2515fe11e7f31ea948eed5e141470 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 24 Jan 2016 10:07:40 -0500 Subject: Add 'launch' hook, based on pip.utils.setuptools_build --- setuptools/launch.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 setuptools/launch.py (limited to 'setuptools/launch.py') diff --git a/setuptools/launch.py b/setuptools/launch.py new file mode 100644 index 00000000..68cce681 --- /dev/null +++ b/setuptools/launch.py @@ -0,0 +1,28 @@ +""" +Launch the Python script on the command line after +setuptools is bootstrapped via import. +""" + +# Note that setuptools gets imported implicitly by the +# invocation of this script using python -m setuptools.launch + +import tokenize +import sys + + +def load(): + """ + Load the script in sys.argv[1] and run it as if it had + been invoked naturally. + """ + globals()['__file__'] = sys.argv[1] + sys.argv[:] = sys.argv[1:] + + open_ = getattr(tokenize, 'open', open) + script = open_(__file__).read() + norm_script = script.replace('\\r\\n', '\\n') + return compile(norm_script, __file__, 'exec') + + +if __name__ == '__main__': + exec(load()) -- cgit v1.2.1 From 634b0aefca69d135dd5226a44fac4c44a47c328d Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Mon, 25 Jan 2016 21:15:02 -0500 Subject: Rather than re-use globals of setuptools.launch, build a unique namespace in which to launch the script. Prevents imports from occuring relative to 'setuptools' on Python 2. Ref #490. --- setuptools/launch.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'setuptools/launch.py') diff --git a/setuptools/launch.py b/setuptools/launch.py index 68cce681..06e15e1e 100644 --- a/setuptools/launch.py +++ b/setuptools/launch.py @@ -10,19 +10,26 @@ import tokenize import sys -def load(): +def run(): """ - Load the script in sys.argv[1] and run it as if it had + Run the script in sys.argv[1] as if it had been invoked naturally. """ - globals()['__file__'] = sys.argv[1] + __builtins__ + script_name = sys.argv[1] + namespace = dict( + __file__ = script_name, + __name__ = '__main__', + __doc__ = None, + ) sys.argv[:] = sys.argv[1:] open_ = getattr(tokenize, 'open', open) - script = open_(__file__).read() + script = open_(script_name).read() norm_script = script.replace('\\r\\n', '\\n') - return compile(norm_script, __file__, 'exec') + code = compile(norm_script, script_name, 'exec') + exec(code, namespace) if __name__ == '__main__': - exec(load()) + run() -- cgit v1.2.1 From 5253f7fbcea33e28af6348c3cc0f65334cad5623 Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Sun, 10 Apr 2016 18:39:35 -0400 Subject: Swap out hard tabs for spaces --- setuptools/launch.py | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) (limited to 'setuptools/launch.py') diff --git a/setuptools/launch.py b/setuptools/launch.py index 06e15e1e..b05cbd2c 100644 --- a/setuptools/launch.py +++ b/setuptools/launch.py @@ -11,25 +11,25 @@ import sys def run(): - """ - Run the script in sys.argv[1] as if it had - been invoked naturally. - """ - __builtins__ - script_name = sys.argv[1] - namespace = dict( - __file__ = script_name, - __name__ = '__main__', - __doc__ = None, - ) - sys.argv[:] = sys.argv[1:] + """ + Run the script in sys.argv[1] as if it had + been invoked naturally. + """ + __builtins__ + script_name = sys.argv[1] + namespace = dict( + __file__ = script_name, + __name__ = '__main__', + __doc__ = None, + ) + sys.argv[:] = sys.argv[1:] - open_ = getattr(tokenize, 'open', open) - script = open_(script_name).read() - norm_script = script.replace('\\r\\n', '\\n') - code = compile(norm_script, script_name, 'exec') - exec(code, namespace) + open_ = getattr(tokenize, 'open', open) + script = open_(script_name).read() + norm_script = script.replace('\\r\\n', '\\n') + code = compile(norm_script, script_name, 'exec') + exec(code, namespace) if __name__ == '__main__': - run() + run() -- cgit v1.2.1 From 2e1ca9656b566b57c7736ef229e9d46c0aa7216c Mon Sep 17 00:00:00 2001 From: stepshal Date: Thu, 14 Jul 2016 12:47:40 +0700 Subject: Remove whitespace around parameter '=' sign. --- setuptools/launch.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'setuptools/launch.py') diff --git a/setuptools/launch.py b/setuptools/launch.py index b05cbd2c..308283ea 100644 --- a/setuptools/launch.py +++ b/setuptools/launch.py @@ -18,9 +18,9 @@ def run(): __builtins__ script_name = sys.argv[1] namespace = dict( - __file__ = script_name, - __name__ = '__main__', - __doc__ = None, + __file__=script_name, + __name__='__main__', + __doc__=None, ) sys.argv[:] = sys.argv[1:] -- cgit v1.2.1 From 9013321c25606a5cd63271cd029c2539490b16d3 Mon Sep 17 00:00:00 2001 From: mattip Date: Mon, 29 Jun 2020 20:37:43 +0300 Subject: catch some resource leaks --- setuptools/launch.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'setuptools/launch.py') diff --git a/setuptools/launch.py b/setuptools/launch.py index 308283ea..0208fdf3 100644 --- a/setuptools/launch.py +++ b/setuptools/launch.py @@ -25,7 +25,8 @@ def run(): sys.argv[:] = sys.argv[1:] open_ = getattr(tokenize, 'open', open) - script = open_(script_name).read() + with open_(script_name) as fid: + script = fid.read() norm_script = script.replace('\\r\\n', '\\n') code = compile(norm_script, script_name, 'exec') exec(code, namespace) -- cgit v1.2.1