pyarmor 8.5.8__zip → 8.5.9__zip
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.
- {pyarmor-8.5.8 → pyarmor-8.5.9}/PKG-INFO +1 -1
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/cli/__init__.py +1 -1
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/cli/context.py +5 -1
- pyarmor-8.5.9/pyarmor/cli/core.data.1 +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/cli/default.cfg +6 -9
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/cli/docker.py +4 -2
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/cli/generate.py +19 -1
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/cli/plugin.py +5 -4
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/cli/repack.py +5 -4
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/cli/resource.py +1 -1
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/config.py +1 -1
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/packer.py +4 -2
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor.egg-info/PKG-INFO +1 -1
- pyarmor-8.5.9/pyarmor.egg-info/requires.txt +1 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/setup.py +1 -1
- pyarmor-8.5.8/pyarmor/cli/core.data.1 +0 -0
- pyarmor-8.5.8/pyarmor.egg-info/requires.txt +0 -1
- {pyarmor-8.5.8 → pyarmor-8.5.9}/MANIFEST.in +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/README.md +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/README.rst +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/__init__.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/benchmark.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/build_meta.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/cli/__main__.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/cli/bootstrap.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/cli/bug.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/cli/config.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/cli/core.data.2 +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/cli/core.data.3 +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/cli/hdinfo.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/cli/merge.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/cli/mixer.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/cli/public_capsule.zip +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/cli/register.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/cli/shell.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/cobuilder.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/README-ZH.md +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/README.md +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/build-for-exe.bat +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/build-for-freeze.bat +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/build-with-project.bat +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/build-with-project.sh +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/cx_Freeze/hello.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/cx_Freeze/queens.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/cx_Freeze/setup.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/helloworld/foo.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/obfuscate-app.bat +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/obfuscate-app.sh +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/obfuscate-pkg.bat +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/obfuscate-pkg.sh +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pack-obfuscated-scripts.bat +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pack-obfuscated-scripts.sh +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/py2exe/hello.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/py2exe/queens.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/py2exe/setup.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pybench/Arithmetic.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pybench/Calls.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pybench/CommandLine.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pybench/Constructs.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pybench/Dict.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pybench/Exceptions.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pybench/Imports.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pybench/Instances.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pybench/Lists.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pybench/Lookups.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pybench/NewInstances.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pybench/Numbers.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pybench/Setup.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pybench/Strings.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pybench/Tuples.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pybench/With.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pybench/clockres.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pybench/package/__init__.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pybench/package/submodule.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pybench/pybench.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/pybench/systimes.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/simple/queens.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/testmod/hello.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/testmod/queens.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/testpkg/main.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/testpkg/mypkg/__init__.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/examples/testpkg/mypkg/foo.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/helper/__init__.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/helper/build_data_module.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/helper/buildext.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/helper/get_bind_key.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/helper/get_license_info.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/helper/get_platform_name.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/helper/merge.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/helper/repack.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/helper/superuntime.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/license.tri +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/platforms/darwin/x86_64/_pytransform.dylib +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/platforms/linux/x86/_pytransform.so +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/platforms/linux/x86_64/_pytransform.so +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/platforms/windows/x86/_pytransform.dll +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/platforms/windows/x86_64/_pytransform.dll +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/plugins/README.md +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/plugins/check_ntp_time.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/polyfills/__init__.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/polyfills/argparse.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/product.key +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/project.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/protect_code.pt +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/protect_code2.pt +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/public.key +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/public_capsule.zip +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/pyarmor-deprecated.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/pyarmor-webui.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/pyarmor.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/pyimcore.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/pyshield.key +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/pyshield.lic +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/pytransform.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/reform.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/register.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/sppmode.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor/utils.py +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor.egg-info/SOURCES.txt +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor.egg-info/dependency_links.txt +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor.egg-info/entry_points.txt +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/pyarmor.egg-info/top_level.txt +0 -0
- {pyarmor-8.5.8 → pyarmor-8.5.9}/setup.cfg +0 -0
|
@@ -110,7 +110,11 @@ def format_platform(plat, arch):
|
|
|
110
110
|
('armv6', ('armv6l',)),
|
|
111
111
|
('armv7', ('armv7l',)),
|
|
112
112
|
('aarch32', ('aarch32',)),
|
|
113
|
-
('aarch64', ('aarch64', 'arm64'))
|
|
113
|
+
('aarch64', ('aarch64', 'arm64')),
|
|
114
|
+
('ppc64le', ('ppc64le',)),
|
|
115
|
+
('mips32el', ('mipsel', 'mips32el')),
|
|
116
|
+
('mips64el', ('mips64el',)),
|
|
117
|
+
('riscv64', ('riscv64',)),
|
|
114
118
|
)
|
|
115
119
|
|
|
116
120
|
for alias, platlist in plat_table:
|
|
Binary file
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
;; Pyarmor version
|
|
4
4
|
major = 8
|
|
5
5
|
minor = 5
|
|
6
|
-
patch =
|
|
6
|
+
patch = 9
|
|
7
7
|
|
|
8
8
|
;; Compatible core version
|
|
9
|
-
cli.core = 6.5.
|
|
9
|
+
cli.core = 6.5.2
|
|
10
10
|
|
|
11
11
|
;; Deprecated since Pyarmor 8.2.5
|
|
12
12
|
; cli.runtime = 3.2.5
|
|
@@ -93,6 +93,7 @@ rft_enables = builtin import function class method global local
|
|
|
93
93
|
rft_auto_exclude = 1
|
|
94
94
|
|
|
95
95
|
;; Export all the names in module attribute __all__
|
|
96
|
+
;; It means leave all the names in the __all__ as they're
|
|
96
97
|
rft_auto_export = 1
|
|
97
98
|
|
|
98
99
|
;; Enable dev mode for rft
|
|
@@ -255,18 +256,14 @@ on_error = 0
|
|
|
255
256
|
;; 3600s
|
|
256
257
|
;; 60m
|
|
257
258
|
;; 1h
|
|
258
|
-
;; 1
|
|
259
|
+
;; 1 = 1h
|
|
259
260
|
; period = 1
|
|
260
261
|
|
|
261
|
-
;; Expired runtime key
|
|
262
|
-
;; otherwise check ntp time
|
|
262
|
+
;; Expired runtime key, support 2 forms:
|
|
263
263
|
;;
|
|
264
|
-
;; 30
|
|
264
|
+
;; 30: expired in 30 days
|
|
265
265
|
;; 2025-12-31
|
|
266
266
|
;;
|
|
267
|
-
;; .30
|
|
268
|
-
;; .2025-12-30
|
|
269
|
-
;;
|
|
270
267
|
; expired =
|
|
271
268
|
|
|
272
269
|
;; Check network time by those servers
|
|
@@ -32,6 +32,7 @@ from .register import Register, MACHFLAGS
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
CONFIG = {
|
|
35
|
+
'host': '0.0.0.0',
|
|
35
36
|
'port': 29092,
|
|
36
37
|
'home': os.path.expanduser(os.path.join('~', '.pyarmor', 'docker')),
|
|
37
38
|
'machid': None,
|
|
@@ -110,6 +111,7 @@ def main_entry():
|
|
|
110
111
|
parser = argparse.ArgumentParser()
|
|
111
112
|
parser.add_argument('-d', '--debug', action='store_true',
|
|
112
113
|
help='Enable debug mode')
|
|
114
|
+
parser.add_argument('--host', type=str, default=CONFIG['host'])
|
|
113
115
|
parser.add_argument('-p', '--port', type=int, default=CONFIG['port'],
|
|
114
116
|
help=argparse.SUPPRESS)
|
|
115
117
|
parser.add_argument('-s', '--sock', default='/var/run/docker.sock',
|
|
@@ -135,9 +137,9 @@ def main_entry():
|
|
|
135
137
|
CONFIG['machid'] = [Pytransform3.get_hd_info(x) for x in MACHFLAGS]
|
|
136
138
|
logging.debug('machine id: %s', CONFIG['machid'])
|
|
137
139
|
|
|
138
|
-
host, port =
|
|
140
|
+
host, port = args.host, args.port
|
|
139
141
|
with socketserver.TCPServer((host, port), DockerAuthHandler) as server:
|
|
140
|
-
logging.info('listen container auth request on %s:%s', host,
|
|
142
|
+
logging.info('listen container auth request on %s:%s', host, port)
|
|
141
143
|
server.serve_forever()
|
|
142
144
|
|
|
143
145
|
|
|
@@ -99,6 +99,21 @@ class Builder(object):
|
|
|
99
99
|
self.ctx.runtime_key = self.generate_runtime_key()
|
|
100
100
|
Pytransform3.generate_runtime_package(self.ctx, output)
|
|
101
101
|
|
|
102
|
+
def _generate_obfuscated_script(self, res):
|
|
103
|
+
try:
|
|
104
|
+
return Pytransform3.generate_obfuscated_script(self.ctx, res)
|
|
105
|
+
except RuntimeError as e:
|
|
106
|
+
if str(e) != 'out of license':
|
|
107
|
+
raise
|
|
108
|
+
|
|
109
|
+
def _copy_script(self, path, res):
|
|
110
|
+
logger.warning('%s is not obfuscated because out of license', res)
|
|
111
|
+
fullpath = os.path.join(path, res.output_filename)
|
|
112
|
+
output = os.path.dirname(fullpath)
|
|
113
|
+
os.makedirs(output, exist_ok=True)
|
|
114
|
+
logger.info('write %s (not obfuscated)', fullpath)
|
|
115
|
+
shutil.copy2(res.fullpath, output)
|
|
116
|
+
|
|
102
117
|
def _obfuscate_scripts(self):
|
|
103
118
|
rev = self.ctx.version_info()
|
|
104
119
|
template = self.ctx.bootstrap_template
|
|
@@ -126,7 +141,10 @@ class Builder(object):
|
|
|
126
141
|
continue
|
|
127
142
|
|
|
128
143
|
logger.info('obfuscating %s', r)
|
|
129
|
-
code =
|
|
144
|
+
code = self._generate_obfuscated_script(r)
|
|
145
|
+
if code is None:
|
|
146
|
+
self._copy_script(path, r)
|
|
147
|
+
continue
|
|
130
148
|
source = r.generate_output(
|
|
131
149
|
template, code, relative=relative, pkgname=pkgname,
|
|
132
150
|
bootpath=bootpath, rev=rev
|
|
@@ -236,10 +236,11 @@ def find_runtime_package(ctx, output):
|
|
|
236
236
|
return os.path.join(output, rtname)
|
|
237
237
|
if isinstance(prefix, str):
|
|
238
238
|
return os.path.join(output, prefix.replace('.', os.path.sep), rtname)
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
if
|
|
242
|
-
|
|
239
|
+
with os.scandir(output) as iterator:
|
|
240
|
+
for entry in iterator:
|
|
241
|
+
if entry.is_dir():
|
|
242
|
+
if rtname in os.listdir(entry.path):
|
|
243
|
+
return os.path.join(entry.path, rtname)
|
|
243
244
|
|
|
244
245
|
|
|
245
246
|
class DarwinUniversalPlugin:
|
|
@@ -2,14 +2,14 @@ import logging
|
|
|
2
2
|
import marshal
|
|
3
3
|
import os
|
|
4
4
|
import shutil
|
|
5
|
-
import struct
|
|
6
5
|
import sys
|
|
7
|
-
import tempfile
|
|
8
6
|
|
|
9
7
|
from fnmatch import fnmatch
|
|
10
8
|
from subprocess import check_call, DEVNULL
|
|
11
9
|
|
|
12
10
|
# Only used by BundleRepacker, they could be removed with deprecated routines
|
|
11
|
+
import struct
|
|
12
|
+
import tempfile
|
|
13
13
|
from importlib._bootstrap_external import _code_to_timestamp_pyc
|
|
14
14
|
from PyInstaller.archive.writers import ZlibArchiveWriter, CArchiveWriter
|
|
15
15
|
from PyInstaller.archive.readers import CArchiveReader
|
|
@@ -41,7 +41,7 @@ def autoclean_output(output, autoclean=True):
|
|
|
41
41
|
shutil.rmtree(output)
|
|
42
42
|
|
|
43
43
|
|
|
44
|
-
# This patch is used to modify the specfile
|
|
44
|
+
# This patch is used to modify the specfile generated by PyInstaller
|
|
45
45
|
#
|
|
46
46
|
# It mainly does:
|
|
47
47
|
#
|
|
@@ -711,7 +711,8 @@ class BundleRepacker:
|
|
|
711
711
|
logger.debug('one file mode is %s', bool(self.one_file_mode))
|
|
712
712
|
|
|
713
713
|
def build(self):
|
|
714
|
-
|
|
714
|
+
obfpath = os.path.normpath(self.ctx.pack_obfpath)
|
|
715
|
+
self.repack(obfpath, self.ctx.runtime_package_name)
|
|
715
716
|
|
|
716
717
|
def repack(self, obfpath, rtname, entry=None):
|
|
717
718
|
buildpath = self.buildpath
|
|
@@ -200,7 +200,7 @@ class PycResource(FileResource):
|
|
|
200
200
|
class PathResource(Resource):
|
|
201
201
|
|
|
202
202
|
def __init__(self, path, name=None, parent=None):
|
|
203
|
-
super().__init__(path, name=
|
|
203
|
+
super().__init__(path, name=os.path.basename(path), parent=parent)
|
|
204
204
|
self.respaths = []
|
|
205
205
|
self.resfiles = []
|
|
206
206
|
|
|
@@ -294,6 +294,8 @@ def _patch_specfile(obfdist, src, specfile, hookpath=None, encoding=None,
|
|
|
294
294
|
end_lines = ("# Patch end.", "", "",)
|
|
295
295
|
|
|
296
296
|
main_lines = (
|
|
297
|
+
"from PyInstaller.config import CONF",
|
|
298
|
+
"_code_cache = getattr(a.pure, '_code_cache', CONF['code_cache'].get(id(a.pure)))",
|
|
297
299
|
"_src = %s" % repr(os.path.abspath(src)),
|
|
298
300
|
"_obf = 0",
|
|
299
301
|
"for i in range(len(a.scripts)):",
|
|
@@ -308,9 +310,9 @@ def _patch_specfile(obfdist, src, specfile, hookpath=None, encoding=None,
|
|
|
308
310
|
" if a.pure[i][1].startswith(_src):",
|
|
309
311
|
" x = a.pure[i][1].replace(_src, r'%s')" % p,
|
|
310
312
|
" if os.path.exists(x):",
|
|
311
|
-
" if
|
|
313
|
+
" if _code_cache:",
|
|
312
314
|
" with open(x) as f:",
|
|
313
|
-
"
|
|
315
|
+
" _code_cache[a.pure[i][0]] = compile(f.read(), a.pure[i][1], 'exec')",
|
|
314
316
|
" a.pure[i] = a.pure[i][0], x, a.pure[i][2]",
|
|
315
317
|
)
|
|
316
318
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pyarmor.cli.core~=6.5.2
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
pyarmor.cli.core~=6.5.1
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|