summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/__hello__.py7
-rw-r--r--Lib/ctypes/test/test_values.py2
-rw-r--r--Lib/test/test_frozen.py5
-rw-r--r--Lib/test/test_importlib/frozen/test_loader.py35
-rw-r--r--Makefile.pre.in6
-rw-r--r--PCbuild/_freeze_module.vcxproj8
-rw-r--r--PCbuild/_freeze_module.vcxproj.filters2
-rw-r--r--Python/frozen.c8
-rw-r--r--Python/frozen_modules/MANIFEST6
-rw-r--r--Python/frozen_modules/__hello__.h25
-rw-r--r--Python/frozen_modules/hello.h14
-rw-r--r--Tools/scripts/freeze_modules.py8
12 files changed, 76 insertions, 50 deletions
diff --git a/Lib/__hello__.py b/Lib/__hello__.py
new file mode 100644
index 0000000..d37bd27
--- /dev/null
+++ b/Lib/__hello__.py
@@ -0,0 +1,7 @@
+initialized = True
+
+def main():
+ print("Hello world!")
+
+if __name__ == '__main__':
+ main()
diff --git a/Lib/ctypes/test/test_values.py b/Lib/ctypes/test/test_values.py
index 4f525cd..96521fd 100644
--- a/Lib/ctypes/test/test_values.py
+++ b/Lib/ctypes/test/test_values.py
@@ -7,7 +7,7 @@ import importlib.util
import unittest
import sys
from ctypes import *
-from test.support import import_helper, captured_stdout
+from test.support import import_helper
import _ctypes_test
diff --git a/Lib/test/test_frozen.py b/Lib/test/test_frozen.py
index 52d8f7c..3d212b9 100644
--- a/Lib/test/test_frozen.py
+++ b/Lib/test/test_frozen.py
@@ -21,8 +21,9 @@ class TestFrozen(unittest.TestCase):
if name in sys.modules:
del sys.modules[name]
with import_helper.frozen_modules():
- with captured_stdout() as out:
- import __hello__
+ import __hello__
+ with captured_stdout() as out:
+ __hello__.main()
self.assertEqual(out.getvalue(), 'Hello world!\n')
diff --git a/Lib/test/test_importlib/frozen/test_loader.py b/Lib/test/test_importlib/frozen/test_loader.py
index 1b0a56f..cfa5e5b 100644
--- a/Lib/test/test_importlib/frozen/test_loader.py
+++ b/Lib/test/test_importlib/frozen/test_loader.py
@@ -21,12 +21,11 @@ def deprecated():
def fresh(name, *, oldapi=False):
with util.uncache(name):
with import_helper.frozen_modules():
- with captured_stdout() as stdout:
- if oldapi:
- with deprecated():
- yield stdout
- else:
- yield stdout
+ if oldapi:
+ with deprecated():
+ yield
+ else:
+ yield
class ExecModuleTests(abc.LoaderTests):
@@ -44,8 +43,10 @@ class ExecModuleTests(abc.LoaderTests):
module.__spec__ = spec
assert not hasattr(module, 'initialized')
- with fresh(name) as stdout:
+ with fresh(name):
self.machinery.FrozenImporter.exec_module(module)
+ with captured_stdout() as stdout:
+ module.main()
self.assertTrue(module.initialized)
self.assertTrue(hasattr(module, '__spec__'))
@@ -119,8 +120,10 @@ class ExecModuleTests(abc.LoaderTests):
class LoaderTests(abc.LoaderTests):
def load_module(self, name):
- with fresh(name, oldapi=True) as stdout:
+ with fresh(name, oldapi=True):
module = self.machinery.FrozenImporter.load_module(name)
+ with captured_stdout() as stdout:
+ module.main()
return module, stdout
def test_module(self):
@@ -165,15 +168,18 @@ class LoaderTests(abc.LoaderTests):
self.assertFalse(hasattr(module, '__file__'))
def test_module_reuse(self):
- with fresh('__hello__', oldapi=True) as stdout:
+ with fresh('__hello__', oldapi=True):
module1 = self.machinery.FrozenImporter.load_module('__hello__')
module2 = self.machinery.FrozenImporter.load_module('__hello__')
+ with captured_stdout() as stdout:
+ module1.main()
+ module2.main()
self.assertIs(module1, module2)
self.assertEqual(stdout.getvalue(),
'Hello world!\nHello world!\n')
def test_module_repr(self):
- with fresh('__hello__', oldapi=True) as stdout:
+ with fresh('__hello__', oldapi=True):
module = self.machinery.FrozenImporter.load_module('__hello__')
repr_str = self.machinery.FrozenImporter.module_repr(module)
self.assertEqual(repr_str,
@@ -203,11 +209,12 @@ class InspectLoaderTests:
def test_get_code(self):
# Make sure that the code object is good.
name = '__hello__'
+ with import_helper.frozen_modules():
+ code = self.machinery.FrozenImporter.get_code(name)
+ mod = types.ModuleType(name)
+ exec(code, mod.__dict__)
with captured_stdout() as stdout:
- with import_helper.frozen_modules():
- code = self.machinery.FrozenImporter.get_code(name)
- mod = types.ModuleType(name)
- exec(code, mod.__dict__)
+ mod.main()
self.assertTrue(hasattr(mod, 'initialized'))
self.assertEqual(stdout.getvalue(), 'Hello world!\n')
diff --git a/Makefile.pre.in b/Makefile.pre.in
index b2a8f0e..3e562d7 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -783,8 +783,8 @@ Python/frozen_modules/posixpath.h: Programs/_freeze_module Lib/posixpath.py
Python/frozen_modules/stat.h: Programs/_freeze_module Lib/stat.py
$(srcdir)/Programs/_freeze_module stat $(srcdir)/Lib/stat.py $(srcdir)/Python/frozen_modules/stat.h
-Python/frozen_modules/hello.h: Programs/_freeze_module Tools/freeze/flag.py
- $(srcdir)/Programs/_freeze_module hello $(srcdir)/Tools/freeze/flag.py $(srcdir)/Python/frozen_modules/hello.h
+Python/frozen_modules/__hello__.h: Programs/_freeze_module Lib/__hello__.py
+ $(srcdir)/Programs/_freeze_module __hello__ $(srcdir)/Lib/__hello__.py $(srcdir)/Python/frozen_modules/__hello__.h
# END: freezing modules
@@ -1030,7 +1030,7 @@ FROZEN_FILES = \
$(srcdir)/Python/frozen_modules/ntpath.h \
$(srcdir)/Python/frozen_modules/posixpath.h \
$(srcdir)/Python/frozen_modules/stat.h \
- $(srcdir)/Python/frozen_modules/hello.h
+ $(srcdir)/Python/frozen_modules/__hello__.h
# End FROZEN_FILES
Python/frozen.o: $(FROZEN_FILES)
diff --git a/PCbuild/_freeze_module.vcxproj b/PCbuild/_freeze_module.vcxproj
index a87dca7..e306884 100644
--- a/PCbuild/_freeze_module.vcxproj
+++ b/PCbuild/_freeze_module.vcxproj
@@ -245,10 +245,10 @@
<IntFile>$(IntDir)zipimport.g.h</IntFile>
<OutFile>$(PySourcePath)Python\frozen_modules\zipimport.h</OutFile>
</None>
- <None Include="..\Tools\freeze\flag.py">
- <ModName>hello</ModName>
- <IntFile>$(IntDir)hello.g.h</IntFile>
- <OutFile>$(PySourcePath)Python\frozen_modules\hello.h</OutFile>
+ <None Include="..\Lib\__hello__.py">
+ <ModName>__hello__</ModName>
+ <IntFile>$(IntDir)__hello__.g.h</IntFile>
+ <OutFile>$(PySourcePath)Python\frozen_modules\__hello__.h</OutFile>
</None>
<!-- END frozen modules -->
</ItemGroup>
diff --git a/PCbuild/_freeze_module.vcxproj.filters b/PCbuild/_freeze_module.vcxproj.filters
index bed7920..6e7c1bb 100644
--- a/PCbuild/_freeze_module.vcxproj.filters
+++ b/PCbuild/_freeze_module.vcxproj.filters
@@ -25,7 +25,7 @@
<None Include="..\Lib\zipimport.py">
<Filter>Python Files</Filter>
</None>
- <None Include="..\Tools\freeze\flag.py">
+ <None Include="..\Lib\__hello__.py">
<Filter>Python Files</Filter>
</None>
<!-- END frozen modules -->
diff --git a/Python/frozen.c b/Python/frozen.c
index eef0f45..cf384d3 100644
--- a/Python/frozen.c
+++ b/Python/frozen.c
@@ -49,7 +49,7 @@
#include "frozen_modules/ntpath.h"
#include "frozen_modules/posixpath.h"
#include "frozen_modules/stat.h"
-#include "frozen_modules/hello.h"
+#include "frozen_modules/__hello__.h"
/* End includes */
/* Note that a negative size indicates a package. */
@@ -74,9 +74,9 @@ static const struct _frozen _PyImport_FrozenModules[] = {
{"stat", _Py_M__stat, (int)sizeof(_Py_M__stat)},
/* Test module */
- {"__hello__", _Py_M__hello, (int)sizeof(_Py_M__hello)},
- {"__phello__", _Py_M__hello, -(int)sizeof(_Py_M__hello)},
- {"__phello__.spam", _Py_M__hello, (int)sizeof(_Py_M__hello)},
+ {"__hello__", _Py_M____hello__, (int)sizeof(_Py_M____hello__)},
+ {"__phello__", _Py_M____hello__, -(int)sizeof(_Py_M____hello__)},
+ {"__phello__.spam", _Py_M____hello__, (int)sizeof(_Py_M____hello__)},
{0, 0, 0} /* sentinel */
};
diff --git a/Python/frozen_modules/MANIFEST b/Python/frozen_modules/MANIFEST
index 811dc5b..b723684 100644
--- a/Python/frozen_modules/MANIFEST
+++ b/Python/frozen_modules/MANIFEST
@@ -15,6 +15,6 @@ genericpath no <genericpath> genericpath.h
ntpath no <ntpath> ntpath.h 15b9b80fa9c2
posixpath no <posixpath> posixpath.h 3fc077252afd
stat no <stat> stat.h 27c32a0815c2
-__hello__ no Tools/freeze/flag.py hello.h af6fb665713f
-__phello__ YES Tools/freeze/flag.py hello.h af6fb665713f
-__phello__.spam no Tools/freeze/flag.py hello.h af6fb665713f
+__hello__ no <__hello__> __hello__.h 81ba13956479
+__phello__ YES <__hello__> __hello__.h 81ba13956479
+__phello__.spam no <__hello__> __hello__.h 81ba13956479
diff --git a/Python/frozen_modules/__hello__.h b/Python/frozen_modules/__hello__.h
new file mode 100644
index 0000000..eea1029
--- /dev/null
+++ b/Python/frozen_modules/__hello__.h
@@ -0,0 +1,25 @@
+/* Auto-generated by Programs/_freeze_module.c */
+const unsigned char _Py_M____hello__[] = {
+ 99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
+ 0,0,0,0,0,115,32,0,0,0,100,0,90,0,100,1,
+ 132,0,90,1,101,2,100,2,107,2,114,14,101,1,131,0,
+ 1,0,100,3,83,0,100,3,83,0,41,4,84,99,0,0,
+ 0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,
+ 0,0,115,12,0,0,0,116,0,100,1,131,1,1,0,100,
+ 0,83,0,41,2,78,122,12,72,101,108,108,111,32,119,111,
+ 114,108,100,33,41,1,218,5,112,114,105,110,116,169,0,243,
+ 0,0,0,0,250,18,60,102,114,111,122,101,110,32,95,95,
+ 104,101,108,108,111,95,95,62,218,4,109,97,105,110,114,4,
+ 0,0,0,3,0,0,0,243,2,0,0,0,12,1,114,5,
+ 0,0,0,115,12,0,0,0,5,10,11,25,5,26,5,26,
+ 5,26,5,26,114,2,0,0,0,90,8,95,95,109,97,105,
+ 110,95,95,78,41,3,90,11,105,110,105,116,105,97,108,105,
+ 122,101,100,114,4,0,0,0,218,8,95,95,110,97,109,101,
+ 95,95,114,1,0,0,0,114,2,0,0,0,114,3,0,0,
+ 0,218,8,60,109,111,100,117,108,101,62,114,7,0,0,0,
+ 1,0,0,0,115,10,0,0,0,4,0,6,2,8,3,10,
+ 1,4,255,115,8,0,0,0,4,0,6,3,6,2,16,1,
+ 115,32,0,0,0,15,19,1,12,1,26,1,26,1,26,4,
+ 12,16,26,4,26,1,11,5,9,5,11,5,11,5,11,5,
+ 11,1,11,1,11,114,2,0,0,0,
+};
diff --git a/Python/frozen_modules/hello.h b/Python/frozen_modules/hello.h
deleted file mode 100644
index 2658c05..0000000
--- a/Python/frozen_modules/hello.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Auto-generated by Programs/_freeze_module.c */
-const unsigned char _Py_M__hello[] = {
- 99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
- 0,0,0,0,0,115,16,0,0,0,100,0,90,0,101,1,
- 100,1,131,1,1,0,100,2,83,0,41,3,84,122,12,72,
- 101,108,108,111,32,119,111,114,108,100,33,78,41,2,90,11,
- 105,110,105,116,105,97,108,105,122,101,100,218,5,112,114,105,
- 110,116,169,0,243,0,0,0,0,122,14,60,102,114,111,122,
- 101,110,32,104,101,108,108,111,62,218,8,60,109,111,100,117,
- 108,101,62,114,3,0,0,0,1,0,0,0,243,4,0,0,
- 0,4,0,12,1,114,4,0,0,0,115,16,0,0,0,15,
- 19,1,12,1,6,7,21,1,22,1,22,1,22,1,22,114,
- 2,0,0,0,
-};
diff --git a/Tools/scripts/freeze_modules.py b/Tools/scripts/freeze_modules.py
index 044ea09..89b6616 100644
--- a/Tools/scripts/freeze_modules.py
+++ b/Tools/scripts/freeze_modules.py
@@ -82,9 +82,9 @@ FROZEN = [
'stat',
]),
('Test module', [
- 'hello : __hello__ = ' + os.path.join(TOOLS_DIR, 'freeze', 'flag.py'),
- 'hello : <__phello__>',
- 'hello : __phello__.spam',
+ '__hello__',
+ '__hello__ : <__phello__>',
+ '__hello__ : __phello__.spam',
]),
]
ESSENTIAL = {
@@ -578,7 +578,7 @@ def regen_pcbuild(modules):
for src in _iter_sources(modules):
# For now we only require the essential frozen modules on Windows.
# See bpo-45186 and bpo-45188.
- if src.id not in ESSENTIAL and src.id != 'hello':
+ if src.id not in ESSENTIAL and src.id != '__hello__':
continue
pyfile = relpath_for_windows_display(src.pyfile, ROOT_DIR)
header = relpath_for_windows_display(src.frozenfile, ROOT_DIR)