pyarmor 8.5.5__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.5 → pyarmor-8.5.7}/PKG-INFO +1 -1
  2. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/__init__.py +1 -1
  3. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/default.cfg +1 -1
  4. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/repack.py +54 -49
  5. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/config.py +1 -1
  6. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor.egg-info/PKG-INFO +1 -1
  7. {pyarmor-8.5.5 → pyarmor-8.5.7}/MANIFEST.in +0 -0
  8. {pyarmor-8.5.5 → pyarmor-8.5.7}/README.md +0 -0
  9. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/README.rst +0 -0
  10. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/__init__.py +0 -0
  11. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/benchmark.py +0 -0
  12. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/build_meta.py +0 -0
  13. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/__main__.py +0 -0
  14. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/bootstrap.py +0 -0
  15. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/bug.py +0 -0
  16. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/config.py +0 -0
  17. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/context.py +0 -0
  18. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/core.data.1 +0 -0
  19. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/core.data.2 +0 -0
  20. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/core.data.3 +0 -0
  21. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/docker.py +0 -0
  22. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/generate.py +0 -0
  23. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/hdinfo.py +0 -0
  24. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/merge.py +0 -0
  25. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/mixer.py +0 -0
  26. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/plugin.py +0 -0
  27. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/public_capsule.zip +0 -0
  28. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/register.py +0 -0
  29. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/resource.py +0 -0
  30. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/shell.py +0 -0
  31. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cobuilder.py +0 -0
  32. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/README-ZH.md +0 -0
  33. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/README.md +0 -0
  34. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/build-for-exe.bat +0 -0
  35. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/build-for-freeze.bat +0 -0
  36. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/build-with-project.bat +0 -0
  37. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/build-with-project.sh +0 -0
  38. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/cx_Freeze/hello.py +0 -0
  39. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/cx_Freeze/queens.py +0 -0
  40. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/cx_Freeze/setup.py +0 -0
  41. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/helloworld/foo.py +0 -0
  42. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/obfuscate-app.bat +0 -0
  43. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/obfuscate-app.sh +0 -0
  44. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/obfuscate-pkg.bat +0 -0
  45. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/obfuscate-pkg.sh +0 -0
  46. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pack-obfuscated-scripts.bat +0 -0
  47. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pack-obfuscated-scripts.sh +0 -0
  48. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/py2exe/hello.py +0 -0
  49. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/py2exe/queens.py +0 -0
  50. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/py2exe/setup.py +0 -0
  51. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Arithmetic.py +0 -0
  52. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Calls.py +0 -0
  53. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/CommandLine.py +0 -0
  54. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Constructs.py +0 -0
  55. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Dict.py +0 -0
  56. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Exceptions.py +0 -0
  57. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Imports.py +0 -0
  58. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Instances.py +0 -0
  59. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Lists.py +0 -0
  60. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Lookups.py +0 -0
  61. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/NewInstances.py +0 -0
  62. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Numbers.py +0 -0
  63. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Setup.py +0 -0
  64. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Strings.py +0 -0
  65. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Tuples.py +0 -0
  66. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/With.py +0 -0
  67. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/clockres.py +0 -0
  68. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/package/__init__.py +0 -0
  69. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/package/submodule.py +0 -0
  70. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/pybench.py +0 -0
  71. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/systimes.py +0 -0
  72. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/simple/queens.py +0 -0
  73. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/testmod/hello.py +0 -0
  74. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/testmod/queens.py +0 -0
  75. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/testpkg/main.py +0 -0
  76. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/testpkg/mypkg/__init__.py +0 -0
  77. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/testpkg/mypkg/foo.py +0 -0
  78. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/helper/__init__.py +0 -0
  79. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/helper/build_data_module.py +0 -0
  80. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/helper/buildext.py +0 -0
  81. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/helper/get_bind_key.py +0 -0
  82. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/helper/get_license_info.py +0 -0
  83. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/helper/get_platform_name.py +0 -0
  84. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/helper/merge.py +0 -0
  85. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/helper/repack.py +0 -0
  86. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/helper/superuntime.py +0 -0
  87. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/license.tri +0 -0
  88. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/packer.py +0 -0
  89. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/platforms/darwin/x86_64/_pytransform.dylib +0 -0
  90. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/platforms/linux/x86/_pytransform.so +0 -0
  91. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/platforms/linux/x86_64/_pytransform.so +0 -0
  92. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/platforms/windows/x86/_pytransform.dll +0 -0
  93. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/platforms/windows/x86_64/_pytransform.dll +0 -0
  94. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/plugins/README.md +0 -0
  95. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/plugins/check_ntp_time.py +0 -0
  96. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/polyfills/__init__.py +0 -0
  97. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/polyfills/argparse.py +0 -0
  98. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/product.key +0 -0
  99. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/project.py +0 -0
  100. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/protect_code.pt +0 -0
  101. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/protect_code2.pt +0 -0
  102. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/public.key +0 -0
  103. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/public_capsule.zip +0 -0
  104. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/pyarmor-deprecated.py +0 -0
  105. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/pyarmor-webui.py +0 -0
  106. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/pyarmor.py +0 -0
  107. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/pyimcore.py +0 -0
  108. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/pyshield.key +0 -0
  109. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/pyshield.lic +0 -0
  110. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/pytransform.py +0 -0
  111. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/reform.py +0 -0
  112. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/register.py +0 -0
  113. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/sppmode.py +0 -0
  114. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/utils.py +0 -0
  115. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor.egg-info/SOURCES.txt +0 -0
  116. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor.egg-info/dependency_links.txt +0 -0
  117. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor.egg-info/entry_points.txt +0 -0
  118. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor.egg-info/requires.txt +0 -0
  119. {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor.egg-info/top_level.txt +0 -0
  120. {pyarmor-8.5.5 → pyarmor-8.5.7}/setup.cfg +0 -0
  121. {pyarmor-8.5.5 → 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.5
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.5'
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 = 5
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,25 +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
- cmdspec.extend(self.filter_opts(self.pyiopts, ('--name', '-N')))
541
+ cmdspec = [sys.executable, '-m', 'PyInstaller.utils.cliutils.makespec']
542
+ cmdspec.extend(self.pyiopts)
543
543
  cmdspec.append(self.script)
544
544
  logger.debug('%s', ' '.join(cmdspec))
545
545
  logger.info('call PyInstaller to generate specfile')
546
546
  check_call(cmdspec, stdout=DEVNULL, stderr=DEVNULL)
547
547
 
548
- name = os.path.splitext(os.path.basename(self.script))[0]
548
+ specfile = self.name + '.spec'
549
549
  rtname = self.ctx.runtime_package_name
550
- specfile = os.path.join(self.packpath, name + '.spec')
551
550
  resfile = os.path.join(self.packpath, 'resources.list')
552
551
  hookscript = os.path.join(self.packpath, 'hook-%s.py' % rtname)
553
552
  self.patch_specfile(specfile, hookscript, resfile)
554
553
 
555
554
  cmdlist = self.pyicmd + ['--clean', '--workpath', self.workpath]
556
- cmdlist.extend(self.pyiopts)
557
555
  cmdlist.append(specfile)
558
556
  logger.debug('%s', ' '.join(cmdlist))
559
557
  logger.info('call PyInstaller to analysis, '
@@ -561,26 +559,33 @@ class Repacker6:
561
559
  check_call(cmdlist, stdout=DEVNULL, stderr=DEVNULL)
562
560
 
563
561
  with open(resfile, 'rb') as f:
564
- 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
565
570
 
566
571
  def build(self):
567
572
  """Generate final bundle to output"""
568
- script = os.path.join(self.obfpath, os.path.basename(self.inputs[0]))
573
+ obfscript = os.path.join(self.obfpath, os.path.basename(self.script))
569
574
  cmdlist = self.pyicmd + [
570
575
  '--clean',
571
576
  '--distpath', self.output,
572
577
  '--workpath', self.workpath,
573
- '--specpath', self.packpath,
574
578
  '--additional-hooks-dir', self.packpath,
579
+ self.modeopt
575
580
  ]
576
581
  cmdlist.extend(self.pyiopts)
577
- cmdlist.append(script)
582
+ cmdlist.append(obfscript)
578
583
 
579
584
  logger.debug('%s', ' '.join(cmdlist))
580
585
  logger.info('call PyInstaller to generate final bundle ...\n')
581
586
  check_call(cmdlist)
582
587
  logger.info('')
583
- logger.info('the final bundle "%s" has been generate successfully',
588
+ logger.info('the final bundle has been generated to "%s" successfully',
584
589
  self.output)
585
590
 
586
591
  def repack(self, *unused):
@@ -1,6 +1,6 @@
1
1
  from sys import platform
2
2
 
3
- version = '8.5.5'
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.5
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