python-script-launcher 0.0.11__py3-none-any.whl → 0.0.12__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- python_script_launcher/__main__.py +21 -10
- python_script_launcher/make_exe.py +12 -3
- {python_script_launcher-0.0.11.dist-info → python_script_launcher-0.0.12.dist-info}/METADATA +1 -1
- {python_script_launcher-0.0.11.dist-info → python_script_launcher-0.0.12.dist-info}/RECORD +7 -7
- {python_script_launcher-0.0.11.dist-info → python_script_launcher-0.0.12.dist-info}/WHEEL +0 -0
- {python_script_launcher-0.0.11.dist-info → python_script_launcher-0.0.12.dist-info}/entry_points.txt +0 -0
- {python_script_launcher-0.0.11.dist-info → python_script_launcher-0.0.12.dist-info}/top_level.txt +0 -0
|
@@ -66,14 +66,20 @@ def cmd_run(args):
|
|
|
66
66
|
LAUNCHER_FILES = ["app.py", "client.py", "tasks.py"]
|
|
67
67
|
STATIC_DIR = "static"
|
|
68
68
|
SHIM_PKG = "python_script_launcher"
|
|
69
|
+
# Files placed inside the staged `python_script_launcher/` package so the
|
|
70
|
+
# frozen exe supports both `from python_script_launcher import task` and
|
|
71
|
+
# `from python_script_launcher.tasks import task`.
|
|
72
|
+
SHIM_SUBMODULES = ("tasks.py",)
|
|
69
73
|
SHIM_INIT = (
|
|
70
|
-
'"'*3 + "
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"from
|
|
74
|
+
'"'*3 + "Runtime shim generated by launcher build.\n\n"
|
|
75
|
+
"Re-exports the public API from ``python_script_launcher.tasks`` so both\n"
|
|
76
|
+
" from python_script_launcher import task\n"
|
|
77
|
+
" from python_script_launcher.tasks import task\n"
|
|
78
|
+
"work inside a frozen exe. The submodule is copied verbatim from the\n"
|
|
79
|
+
"installed launcher package.\n"
|
|
74
80
|
+ '"'*3 + "\n"
|
|
75
|
-
"from tasks import * # noqa: F401,F403\n"
|
|
76
|
-
"from tasks import task, run_cli, collect_tasks, TaskSpec, TaskParam # noqa: F401\n"
|
|
81
|
+
"from .tasks import * # noqa: F401,F403\n"
|
|
82
|
+
"from .tasks import task, run_cli, collect_tasks, TaskSpec, TaskParam # noqa: F401\n"
|
|
77
83
|
)
|
|
78
84
|
|
|
79
85
|
|
|
@@ -89,12 +95,17 @@ def _stage_project(scripts_src: Path) -> Path:
|
|
|
89
95
|
static_src = PACKAGE_DIR / STATIC_DIR
|
|
90
96
|
if static_src.exists():
|
|
91
97
|
shutil.copytree(static_src, tmp / STATIC_DIR)
|
|
92
|
-
#
|
|
93
|
-
#
|
|
94
|
-
#
|
|
95
|
-
#
|
|
98
|
+
# Stage a real `python_script_launcher/` package next to the top-level
|
|
99
|
+
# runtime files. Copying `tasks.py` in as a submodule (plus a small
|
|
100
|
+
# re-export shim in __init__.py) makes both `from python_script_launcher
|
|
101
|
+
# import task` and `from python_script_launcher.tasks import task` work
|
|
102
|
+
# inside the frozen exe, matching what the wheel install exposes.
|
|
96
103
|
shim_dir = tmp / SHIM_PKG
|
|
97
104
|
shim_dir.mkdir(parents=True, exist_ok=True)
|
|
105
|
+
for name in SHIM_SUBMODULES:
|
|
106
|
+
src = PACKAGE_DIR / name
|
|
107
|
+
if src.exists():
|
|
108
|
+
shutil.copy2(src, shim_dir / name)
|
|
98
109
|
(shim_dir / "__init__.py").write_text(SHIM_INIT, encoding="utf-8", newline="\n")
|
|
99
110
|
# Copy user scripts into <tmp>/scripts so both scan_scripts and
|
|
100
111
|
# PyInstaller's --add-data pick them up.
|
|
@@ -161,9 +161,17 @@ def build_exe(entry, name, *, project=None, dist=None, static=None,
|
|
|
161
161
|
# mirrors publish.py wheel layout and add its parent to `--paths`, so
|
|
162
162
|
# `from python_script_launcher.tasks import task` resolves the same
|
|
163
163
|
# way it does when installed from the wheel.
|
|
164
|
-
|
|
164
|
+
# If the caller already staged a python_script_launcher/ package into
|
|
165
|
+
# `project` (e.g. via __main__.cmd_build), reuse it verbatim so we do
|
|
166
|
+
# not end up with two competing copies of the same package on --paths.
|
|
167
|
+
if (project / "python_script_launcher" / "__init__.py").exists():
|
|
168
|
+
stage_root = None
|
|
169
|
+
else:
|
|
170
|
+
stage_root = _stage_launcher_package(project)
|
|
165
171
|
try:
|
|
166
|
-
cmd += ["--paths", str(project)
|
|
172
|
+
cmd += ["--paths", str(project)]
|
|
173
|
+
if stage_root is not None:
|
|
174
|
+
cmd += ["--paths", str(stage_root)]
|
|
167
175
|
if (project / "tasks.py").exists():
|
|
168
176
|
cmd += ["--hidden-import", "tasks"]
|
|
169
177
|
cmd += [
|
|
@@ -188,7 +196,8 @@ def build_exe(entry, name, *, project=None, dist=None, static=None,
|
|
|
188
196
|
out = f"{dist_dir}/{name}.exe" if onefile else f"{dist_dir}/{name}/{name}.exe"
|
|
189
197
|
print(f" [OK] {name} -> {out}\n")
|
|
190
198
|
finally:
|
|
191
|
-
|
|
199
|
+
if stage_root is not None:
|
|
200
|
+
shutil.rmtree(stage_root, ignore_errors=True)
|
|
192
201
|
|
|
193
202
|
|
|
194
203
|
def main():
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
python_script_launcher/__init__.py,sha256=XeqJdWwu4-26nBlxeu2urarg3chsKMYYAWKgbUQnUyo,1750
|
|
2
|
-
python_script_launcher/__main__.py,sha256=
|
|
2
|
+
python_script_launcher/__main__.py,sha256=siqi1bFNpbuK2ed-fvJ-E1EcLg9KCurFN8dP3fvP7V8,7349
|
|
3
3
|
python_script_launcher/app.py,sha256=Qr5GAhqiHaKs3eZUkJvsyMInDIPGcJb0m8pJ-D1zuUY,25211
|
|
4
4
|
python_script_launcher/client.py,sha256=pULe9xHv4OuXFAdiFAEHp4uxO8x4D_myyNX6ofqElMg,2964
|
|
5
|
-
python_script_launcher/make_exe.py,sha256=
|
|
5
|
+
python_script_launcher/make_exe.py,sha256=4K8gHnfg7FGgD1WvHaxwp9yk1MhpWGtJOXHYpZgc0Ws,8826
|
|
6
6
|
python_script_launcher/tasks.py,sha256=0f6P88vlUXscnIxXNL5pEQpmr6x-kavAHvDB9Z1qowE,5755
|
|
7
7
|
python_script_launcher/scripts/file_status.py,sha256=D22FwHlsNnJkHz7ICyM3L2xK3vhNaMRl-aJEERrEG8s,1063
|
|
8
8
|
python_script_launcher/scripts/hello.py,sha256=df5gR95rta5J0sDORI0wncCTBS0wGrTX07pEcR9R4_A,517
|
|
9
9
|
python_script_launcher/scripts/multi.py,sha256=2HApGhrdt8Xs1WZ9HY7yHXAlabqc1KRC6CHqTUhjWy0,590
|
|
10
10
|
python_script_launcher/scripts/test_modules.py,sha256=AFzAAC2NlYSVcPucNgChguLMEj8m1pmCIB3LIDthOf8,618
|
|
11
11
|
python_script_launcher/static/index.html,sha256=_HTLklrRge6A09l2kb5ucFI4rrm2KMIEgU9xXbPJzT8,15000
|
|
12
|
-
python_script_launcher-0.0.
|
|
13
|
-
python_script_launcher-0.0.
|
|
14
|
-
python_script_launcher-0.0.
|
|
15
|
-
python_script_launcher-0.0.
|
|
16
|
-
python_script_launcher-0.0.
|
|
12
|
+
python_script_launcher-0.0.12.dist-info/METADATA,sha256=qBK3LK0GmI_r9v9Qnpxc3_J4KUDMVATVl2KaKjuRHd4,6378
|
|
13
|
+
python_script_launcher-0.0.12.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
|
|
14
|
+
python_script_launcher-0.0.12.dist-info/entry_points.txt,sha256=13ENRmw4BsgWGLDCr_y1dKB91ed1j6rEyks6JDFzOns,66
|
|
15
|
+
python_script_launcher-0.0.12.dist-info/top_level.txt,sha256=Ap6WryIb1YRnr_QVCmfGjdEVLDNA3dQcTl_-gxX11qk,23
|
|
16
|
+
python_script_launcher-0.0.12.dist-info/RECORD,,
|
|
File without changes
|
{python_script_launcher-0.0.11.dist-info → python_script_launcher-0.0.12.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{python_script_launcher-0.0.11.dist-info → python_script_launcher-0.0.12.dist-info}/top_level.txt
RENAMED
|
File without changes
|