pyarmor 8.5.6__zip → 8.5.7__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.
Files changed (121) hide show
  1. {pyarmor-8.5.6 → pyarmor-8.5.7}/PKG-INFO +1 -1
  2. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/__init__.py +1 -1
  3. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/default.cfg +1 -1
  4. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/repack.py +54 -51
  5. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/config.py +1 -1
  6. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor.egg-info/PKG-INFO +1 -1
  7. {pyarmor-8.5.6 → pyarmor-8.5.7}/MANIFEST.in +0 -0
  8. {pyarmor-8.5.6 → pyarmor-8.5.7}/README.md +0 -0
  9. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/README.rst +0 -0
  10. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/__init__.py +0 -0
  11. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/benchmark.py +0 -0
  12. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/build_meta.py +0 -0
  13. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/__main__.py +0 -0
  14. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/bootstrap.py +0 -0
  15. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/bug.py +0 -0
  16. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/config.py +0 -0
  17. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/context.py +0 -0
  18. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/core.data.1 +0 -0
  19. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/core.data.2 +0 -0
  20. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/core.data.3 +0 -0
  21. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/docker.py +0 -0
  22. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/generate.py +0 -0
  23. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/hdinfo.py +0 -0
  24. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/merge.py +0 -0
  25. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/mixer.py +0 -0
  26. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/plugin.py +0 -0
  27. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/public_capsule.zip +0 -0
  28. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/register.py +0 -0
  29. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/resource.py +0 -0
  30. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/shell.py +0 -0
  31. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cobuilder.py +0 -0
  32. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/README-ZH.md +0 -0
  33. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/README.md +0 -0
  34. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/build-for-exe.bat +0 -0
  35. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/build-for-freeze.bat +0 -0
  36. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/build-with-project.bat +0 -0
  37. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/build-with-project.sh +0 -0
  38. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/cx_Freeze/hello.py +0 -0
  39. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/cx_Freeze/queens.py +0 -0
  40. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/cx_Freeze/setup.py +0 -0
  41. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/helloworld/foo.py +0 -0
  42. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/obfuscate-app.bat +0 -0
  43. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/obfuscate-app.sh +0 -0
  44. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/obfuscate-pkg.bat +0 -0
  45. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/obfuscate-pkg.sh +0 -0
  46. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pack-obfuscated-scripts.bat +0 -0
  47. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pack-obfuscated-scripts.sh +0 -0
  48. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/py2exe/hello.py +0 -0
  49. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/py2exe/queens.py +0 -0
  50. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/py2exe/setup.py +0 -0
  51. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Arithmetic.py +0 -0
  52. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Calls.py +0 -0
  53. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/CommandLine.py +0 -0
  54. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Constructs.py +0 -0
  55. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Dict.py +0 -0
  56. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Exceptions.py +0 -0
  57. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Imports.py +0 -0
  58. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Instances.py +0 -0
  59. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Lists.py +0 -0
  60. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Lookups.py +0 -0
  61. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/NewInstances.py +0 -0
  62. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Numbers.py +0 -0
  63. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Setup.py +0 -0
  64. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Strings.py +0 -0
  65. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Tuples.py +0 -0
  66. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/With.py +0 -0
  67. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/clockres.py +0 -0
  68. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/package/__init__.py +0 -0
  69. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/package/submodule.py +0 -0
  70. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/pybench.py +0 -0
  71. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/systimes.py +0 -0
  72. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/simple/queens.py +0 -0
  73. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/testmod/hello.py +0 -0
  74. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/testmod/queens.py +0 -0
  75. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/testpkg/main.py +0 -0
  76. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/testpkg/mypkg/__init__.py +0 -0
  77. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/testpkg/mypkg/foo.py +0 -0
  78. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/helper/__init__.py +0 -0
  79. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/helper/build_data_module.py +0 -0
  80. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/helper/buildext.py +0 -0
  81. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/helper/get_bind_key.py +0 -0
  82. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/helper/get_license_info.py +0 -0
  83. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/helper/get_platform_name.py +0 -0
  84. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/helper/merge.py +0 -0
  85. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/helper/repack.py +0 -0
  86. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/helper/superuntime.py +0 -0
  87. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/license.tri +0 -0
  88. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/packer.py +0 -0
  89. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/platforms/darwin/x86_64/_pytransform.dylib +0 -0
  90. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/platforms/linux/x86/_pytransform.so +0 -0
  91. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/platforms/linux/x86_64/_pytransform.so +0 -0
  92. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/platforms/windows/x86/_pytransform.dll +0 -0
  93. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/platforms/windows/x86_64/_pytransform.dll +0 -0
  94. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/plugins/README.md +0 -0
  95. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/plugins/check_ntp_time.py +0 -0
  96. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/polyfills/__init__.py +0 -0
  97. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/polyfills/argparse.py +0 -0
  98. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/product.key +0 -0
  99. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/project.py +0 -0
  100. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/protect_code.pt +0 -0
  101. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/protect_code2.pt +0 -0
  102. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/public.key +0 -0
  103. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/public_capsule.zip +0 -0
  104. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/pyarmor-deprecated.py +0 -0
  105. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/pyarmor-webui.py +0 -0
  106. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/pyarmor.py +0 -0
  107. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/pyimcore.py +0 -0
  108. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/pyshield.key +0 -0
  109. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/pyshield.lic +0 -0
  110. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/pytransform.py +0 -0
  111. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/reform.py +0 -0
  112. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/register.py +0 -0
  113. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/sppmode.py +0 -0
  114. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/utils.py +0 -0
  115. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor.egg-info/SOURCES.txt +0 -0
  116. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor.egg-info/dependency_links.txt +0 -0
  117. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor.egg-info/entry_points.txt +0 -0
  118. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor.egg-info/requires.txt +0 -0
  119. {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor.egg-info/top_level.txt +0 -0
  120. {pyarmor-8.5.6 → pyarmor-8.5.7}/setup.cfg +0 -0
  121. {pyarmor-8.5.6 → pyarmor-8.5.7}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.1
2
2
  Name: pyarmor
3
- Version: 8.5.6
3
+ Version: 8.5.7
4
4
  Summary: A tool used to obfuscate python scripts, bind obfuscated scripts to fixed machine or expire obfuscated scripts.
5
5
  Home-page: https://github.com/dashingsoft/pyarmor
6
6
  Author: Jondy Zhao
@@ -1,6 +1,6 @@
1
1
  import logging
2
2
 
3
- __VERSION__ = '8.5.6'
3
+ __VERSION__ = '8.5.7'
4
4
 
5
5
  logger = logging.getLogger('cli')
6
6
 
@@ -3,7 +3,7 @@
3
3
  ;; Pyarmor version
4
4
  major = 8
5
5
  minor = 5
6
- patch = 6
6
+ patch = 7
7
7
 
8
8
  ;; Compatible core version
9
9
  cli.core = 6.5.1
@@ -6,6 +6,7 @@ import struct
6
6
  import sys
7
7
  import tempfile
8
8
 
9
+ from fnmatch import fnmatch
9
10
  from importlib._bootstrap_external import _code_to_timestamp_pyc
10
11
  from subprocess import check_call, check_output, DEVNULL
11
12
 
@@ -451,30 +452,34 @@ class Repacker:
451
452
  # All of them will be obfuscated automatically
452
453
  #
453
454
  spec_patch_code = '''
454
- from PyInstaller.compat import base_prefix
455
455
  import marshal
456
456
  import os
457
457
 
458
+ from PyInstaller.compat import base_prefix
459
+ from sys import prefix, exec_prefix
460
+
461
+ exlist = set([base_prefix, prefix, exec_prefix])
462
+ exlist = [os.path.normpath(x) for x in exlist]
463
+
464
+ src = {src}
465
+ sn = len(src) + 1
466
+ sdir = os.path.relpath(src)
467
+ sdir = '' if sdir == '.' else sdir
468
+
458
469
  hiddenimports = set([])
459
470
  plist = set([])
460
471
  mlist = []
461
- src = {src}
462
- sn = len(src) + 1
463
- prefix = os.path.relpath(src)
464
- prefix = '' if prefix == '.' else prefix
465
472
 
466
473
  for name, path, kind in a.pure:
467
474
  if name.startswith('pyi_rth'):
468
475
  continue
469
- if path.startswith(src) and not path.startswith(base_prefix):
470
- hiddenimports.add(name)
476
+ hiddenimports.add(name)
477
+ if path.startswith(src) and not any([path.startswith(x) for x in exlist]):
471
478
  if name.find('.') == -1 and os.path.basename(path) != '__init__.py':
472
- mlist.append(os.path.join(prefix, path[sn:]))
479
+ mlist.append(os.path.join(sdir, path[sn:]))
473
480
  else:
474
481
  pkgname = os.path.dirname(path[sn:]).split(os.sep)[0]
475
- plist.add(os.path.join(prefix, pkgname))
476
- else:
477
- hiddenimports.add(name.split('.')[0])
482
+ plist.add(os.path.join(sdir, pkgname))
478
483
 
479
484
  with open({resfile}, 'wb') as f:
480
485
  marshal.dump(mlist + list(plist), f)
@@ -488,46 +493,44 @@ class Repacker6:
488
493
 
489
494
  Args:
490
495
  ctx: build context
491
- mode: onefile or onefolder
496
+ mode: onefile or onedir
492
497
  inputs: main script to pack
498
+ output: path to store final bundle, default is `dist`
493
499
  """
494
500
 
495
501
  def __init__(self, ctx, mode, inputs, output):
496
502
  self.ctx = ctx
497
503
  self.inputs = inputs
498
- self.output = 'dist' if output is None else os.path.normpath(output)
504
+ self.output = os.path.normpath(output) if output else 'dist'
499
505
 
500
506
  self.script = self.inputs[0]
507
+ self.name = os.path.splitext(os.path.basename(self.script))[0]
501
508
  self.obfpath = os.path.normpath(self.ctx.pack_obfpath)
502
509
  self.packpath = os.path.normpath(self.ctx.pack_basepath)
503
510
  self.workpath = os.path.join(self.packpath, 'build')
504
511
  self.pyicmd = [sys.executable, '-m', 'PyInstaller']
505
- self.pyiopts = self.init_opts(mode)
506
512
  self.autoclean = mode in ('FC', 'DC')
513
+ self.modeopt = '-F' if mode in ('onefile', 'F', 'FC') else '-D'
514
+ self.init_opts()
507
515
 
508
- def init_opts(self, mode):
509
- opts = []
510
- exopts = '--noconfirm', '-y'
511
- if mode == 'auto':
512
- exopts += ('--onefile', '-F', '--onefolder', '-D')
513
- else:
514
- opts.append('-F' if mode in ('onefile', 'F', 'FC') else '-D')
515
- opts.extend(self.ctx.pyi_options)
516
-
516
+ def init_opts(self):
517
+ opts = self.ctx.pyi_options
518
+ exopts = '--noconfirm', '-y', '--onefile', '-F', '--onedir', '-D'
517
519
  exvalues = '--distpath', '--specpath', '--workpath'
518
- return self.filter_opts(opts, exvalues, exopts)
519
-
520
- def filter_opts(self, opts, exvalues, exopts=None):
521
- result = []
522
- isvalue = False
523
- for x in opts:
524
- if isvalue:
525
- isvalue = False
526
- elif x in exvalues:
527
- isvalue = True
528
- elif exopts is None or x not in exopts:
529
- result.append(x)
530
- return result
520
+
521
+ self.pyiopts = []
522
+
523
+ n = 0
524
+ while n < len(opts):
525
+ x = opts[n]
526
+ if x in ('--name', '-n'):
527
+ self.name = opts[n+1]
528
+
529
+ if x in exvalues:
530
+ n += 1
531
+ elif x not in exopts:
532
+ self.pyiopts.append(x)
533
+ n += 1
531
534
 
532
535
  def analysis(self):
533
536
  """Got imported modules and packages by PyInstaller
@@ -535,27 +538,20 @@ class Repacker6:
535
538
  Generate hook script
536
539
  Return file/dir list need to be obfuscated
537
540
  """
538
- cmdspec = [
539
- sys.executable, '-m', 'PyInstaller.utils.cliutils.makespec',
540
- '--specpath', self.packpath
541
- ]
542
- exvalues = '--name', '-N'
543
- exopts = '-F', '--onefile', '-D', '--onefolder'
544
- cmdspec.extend(self.filter_opts(self.pyiopts, exvalues, exopts))
541
+ cmdspec = [sys.executable, '-m', 'PyInstaller.utils.cliutils.makespec']
542
+ cmdspec.extend(self.pyiopts)
545
543
  cmdspec.append(self.script)
546
544
  logger.debug('%s', ' '.join(cmdspec))
547
545
  logger.info('call PyInstaller to generate specfile')
548
546
  check_call(cmdspec, stdout=DEVNULL, stderr=DEVNULL)
549
547
 
550
- name = os.path.splitext(os.path.basename(self.script))[0]
548
+ specfile = self.name + '.spec'
551
549
  rtname = self.ctx.runtime_package_name
552
- specfile = os.path.join(self.packpath, name + '.spec')
553
550
  resfile = os.path.join(self.packpath, 'resources.list')
554
551
  hookscript = os.path.join(self.packpath, 'hook-%s.py' % rtname)
555
552
  self.patch_specfile(specfile, hookscript, resfile)
556
553
 
557
554
  cmdlist = self.pyicmd + ['--clean', '--workpath', self.workpath]
558
- cmdlist.extend(self.filter_opts(self.pyiopts, exvalues, exopts))
559
555
  cmdlist.append(specfile)
560
556
  logger.debug('%s', ' '.join(cmdlist))
561
557
  logger.info('call PyInstaller to analysis, '
@@ -563,26 +559,33 @@ class Repacker6:
563
559
  check_call(cmdlist, stdout=DEVNULL, stderr=DEVNULL)
564
560
 
565
561
  with open(resfile, 'rb') as f:
566
- return marshal.load(f)
562
+ reslist = marshal.load(f)
563
+
564
+ resoptions = self.ctx.get_res_options('')
565
+ excludes = resoptions.get('excludes', '').split()
566
+ if excludes:
567
+ reslist = [x for x in reslist
568
+ if not any([fnmatch(x, pat) for pat in excludes])]
569
+ return reslist
567
570
 
568
571
  def build(self):
569
572
  """Generate final bundle to output"""
570
- script = os.path.join(self.obfpath, os.path.basename(self.inputs[0]))
573
+ obfscript = os.path.join(self.obfpath, os.path.basename(self.script))
571
574
  cmdlist = self.pyicmd + [
572
575
  '--clean',
573
576
  '--distpath', self.output,
574
577
  '--workpath', self.workpath,
575
- '--specpath', self.packpath,
576
578
  '--additional-hooks-dir', self.packpath,
579
+ self.modeopt
577
580
  ]
578
581
  cmdlist.extend(self.pyiopts)
579
- cmdlist.append(script)
582
+ cmdlist.append(obfscript)
580
583
 
581
584
  logger.debug('%s', ' '.join(cmdlist))
582
585
  logger.info('call PyInstaller to generate final bundle ...\n')
583
586
  check_call(cmdlist)
584
587
  logger.info('')
585
- logger.info('the final bundle "%s" has been generate successfully',
588
+ logger.info('the final bundle has been generated to "%s" successfully',
586
589
  self.output)
587
590
 
588
591
  def repack(self, *unused):
@@ -1,6 +1,6 @@
1
1
  from sys import platform
2
2
 
3
- version = '8.5.6'
3
+ version = '8.5.7'
4
4
 
5
5
  # The corresponding version of pytransform.so
6
6
  core_version = 'r52.6'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.1
2
2
  Name: pyarmor
3
- Version: 8.5.6
3
+ Version: 8.5.7
4
4
  Summary: A tool used to obfuscate python scripts, bind obfuscated scripts to fixed machine or expire obfuscated scripts.
5
5
  Home-page: https://github.com/dashingsoft/pyarmor
6
6
  Author: Jondy Zhao
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