1
2/* Frozen modules initializer */
3
4#include "Python.h"
5#include "importlib.h"
6#include "importlib_external.h"
7#include "importlib_zipimport.h"
8
9/* In order to test the support for frozen modules, by default we
10 define a single frozen module, __hello__. Loading it will print
11 some famous words... */
12
13/* Run "make regen-frozen" to regen the file below (e.g. after a bytecode
14 * format change). The include file defines _Py_M__hello as an array of bytes.
15 */
16#include "frozen_hello.h"
17
18#define SIZE (int)sizeof(_Py_M__hello)
19
20static const struct _frozen _PyImport_FrozenModules[] = {
21 /* importlib */
22 {"_frozen_importlib", _Py_M__importlib_bootstrap,
23 (int)sizeof(_Py_M__importlib_bootstrap)},
24 {"_frozen_importlib_external", _Py_M__importlib_bootstrap_external,
25 (int)sizeof(_Py_M__importlib_bootstrap_external)},
26 {"zipimport", _Py_M__zipimport,
27 (int)sizeof(_Py_M__zipimport)},
28 /* Test module */
29 {"__hello__", _Py_M__hello, SIZE},
30 /* Test package (negative size indicates package-ness) */
31 {"__phello__", _Py_M__hello, -SIZE},
32 {"__phello__.spam", _Py_M__hello, SIZE},
33 {0, 0, 0} /* sentinel */
34};
35
36/* Embedding apps may change this pointer to point to their favorite
37 collection of frozen modules: */
38
39const struct _frozen *PyImport_FrozenModules = _PyImport_FrozenModules;
40