From 769d89ea12b97b1a76276e46734c47da55fb32b6 Mon Sep 17 00:00:00 2001 From: Hossein Shah Date: Wed, 9 Nov 2022 15:45:10 +0330 Subject: [PATCH 01/14] fix: making the stubs optional --- src/obfpkg/main.py | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/src/obfpkg/main.py b/src/obfpkg/main.py index 12367ce..26ef6c6 100644 --- a/src/obfpkg/main.py +++ b/src/obfpkg/main.py @@ -47,7 +47,7 @@ def get_args() -> argparse.ArgumentParser: "--stubs-dir", metavar="stubs_pkg_dir", type=PathCheck(exists=Exist(check=True), ptype=PathType.DIR), - help=f"The directory of stubs package project (needed 'setup.py' for build pkg-stubs). default is: /../{STUBS_PACKAGE_DIR_NAME}", + help="The directory of stubs package project (needed 'setup.py' for build pkg-stubs).", ) return parser @@ -67,7 +67,7 @@ def get_package_name(src: Path): return package -def rewriter(path: Path): +def rewrite_manifest(path: Path): lines = [ "\nglobal-include *.pyi", # important for stubs package", "\nrecursive-include */pytransform *", # important for obfuscate package", @@ -87,11 +87,6 @@ def rewriter(path: Path): f.writelines(must_write_lines) -def recreate_manifest(src: Path, stubs_build_path: Path): - for path in [src, stubs_build_path]: - rewriter(path.joinpath(MANIFEST_FILE_NAME)) - - def create_stubs_package( src: Path, build_path: Path, @@ -146,11 +141,6 @@ def main(): print(f"{k:>15}: {v!r:<20}") print() - stubs_build_path = ( - args.src / f"../{STUBS_PACKAGE_DIR_NAME}" - if args.stubs_dir is None - else args.stubs_dir - ) if args.output_dir is None: args.output_dir = (args.src / f"../dist").resolve() try: @@ -158,16 +148,19 @@ def main(): except FileExistsError: pass - recreate_manifest(args.src, stubs_build_path) + if args.stubs_dir: + stubs_build_path = args.stubs_dir.resolve() + PathCheck(exists=Exist(check=True), ptype=PathType.DIR)(stubs_build_path) + rewrite_manifest(stubs_build_path.joinpath(MANIFEST_FILE_NAME)) + create_stubs_package( + src=args.src, + build_path=stubs_build_path, + output_dir=args.output_dir, + package_name=package_name, + verbose=args.verbose, + ) - PathCheck(exists=Exist(check=True), ptype=PathType.DIR)(stubs_build_path) - create_stubs_package( - src=args.src, - build_path=stubs_build_path, - output_dir=args.output_dir, - package_name=package_name, - verbose=args.verbose, - ) + rewrite_manifest(args.src.joinpath(MANIFEST_FILE_NAME)) create_obfuscated_package( src=args.src, From a163cd0662146efcf5dda2da6fdca9fbffae6ed2 Mon Sep 17 00:00:00 2001 From: Sadegh Yazdani Date: Fri, 11 Nov 2022 11:57:06 +0330 Subject: [PATCH 02/14] build: pyarmor version range tested --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index a44fb78..e9a8846 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -pyarmor==6.6.2 +pyarmor<=6.6.2,>=6.5.0 mypy==0.982 wheel \ No newline at end of file From 72359ed46572188ee817fb7e05ff390ab403ece1 Mon Sep 17 00:00:00 2001 From: Sadegh Yazdani Date: Fri, 11 Nov 2022 13:48:32 +0330 Subject: [PATCH 03/14] fix: build package with new setuptools --- template/src_pkg/setup.py | 14 +++----------- template/stubs-pkg/setup.py | 5 +++-- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/template/src_pkg/setup.py b/template/src_pkg/setup.py index 4b0501e..e792377 100644 --- a/template/src_pkg/setup.py +++ b/template/src_pkg/setup.py @@ -1,4 +1,4 @@ -from setuptools import find_packages, setup +from setuptools import setup, find_namespace_packages version = "0.1.0" DESCRIPTION = "A print package" @@ -13,10 +13,7 @@ author="Sadegh Yazdani", author_email="m.s.yazdani85@gmail.com", license="GPLv3", - project_urls={ - "Source Code": "https://github.com/aerosadegh/komet/", - }, - packages=find_packages(), + packages=find_namespace_packages(), include_package_data=True, # Importants install_requires=[], keywords="printing", @@ -26,12 +23,7 @@ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", - "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3.12", ], - python_requires=">=3.8,<3.11", + python_requires="~=3.8", ) diff --git a/template/stubs-pkg/setup.py b/template/stubs-pkg/setup.py index 785792b..6a2392b 100644 --- a/template/stubs-pkg/setup.py +++ b/template/stubs-pkg/setup.py @@ -4,7 +4,8 @@ # Collect package from src_pkg Automatically -packages_name = find_namespace_packages(".")[0] +packages = find_namespace_packages(".") +packages_name = packages[0] original_package_name, _, _ = packages_name.partition("-") @@ -19,7 +20,7 @@ author="Sadegh Yazdani", author_email="m.s.yazdani85@gmail.com", license="GPLv3", - packages=[x for x in find_namespace_packages() if os.path.isdir(x)], + packages=[x for x in packages], include_package_data=True, # Important install_requires=[], classifiers=[ From af44721f41bd22d63a2ae70bfd15f5bcce0656da Mon Sep 17 00:00:00 2001 From: Sadegh Yazdani Date: Fri, 11 Nov 2022 13:49:32 +0330 Subject: [PATCH 04/14] fix: specipy pyversion for build obf-pkg pyarmor prevent execute package by othe pyversion --- src/obfpkg/core/packager.py | 14 ++++++++++++-- src/obfpkg/main.py | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/obfpkg/core/packager.py b/src/obfpkg/core/packager.py index dc50ec4..d2bd507 100644 --- a/src/obfpkg/core/packager.py +++ b/src/obfpkg/core/packager.py @@ -11,15 +11,25 @@ def __init__(self, build_path: Path, output_path: Path, verbose: bool = False): self.output_path = output_path self.verbose = verbose - def build(self): + def build(self, with_version=False): + version = ( + [ + "--python-tag", + f"cp{sys.version_info.major}{sys.version_info.minor}", + ] + if with_version + else [] + ) process = Popen( [ sys.executable, "setup.py", + "build", "bdist_wheel", "--dist-dir", "whl", - ], + ] + + version, cwd=f"{self.build_path}", stdout=PIPE, stderr=PIPE, diff --git a/src/obfpkg/main.py b/src/obfpkg/main.py index 26ef6c6..66772f9 100644 --- a/src/obfpkg/main.py +++ b/src/obfpkg/main.py @@ -129,7 +129,7 @@ def create_obfuscated_package( output_path=output_dir, verbose=verbose, ) - package_generator.build() + package_generator.build(with_version=True) package_generator.move_to_output() From 05c3bf8443e9a6094041dae2ff13d3a34a9ad3f6 Mon Sep 17 00:00:00 2001 From: Sadegh Yazdani Date: Fri, 11 Nov 2022 14:47:01 +0330 Subject: [PATCH 05/14] perf: remove unused import --- template/stubs-pkg/setup.py | 1 - 1 file changed, 1 deletion(-) diff --git a/template/stubs-pkg/setup.py b/template/stubs-pkg/setup.py index 6a2392b..1b336f6 100644 --- a/template/stubs-pkg/setup.py +++ b/template/stubs-pkg/setup.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -import os from setuptools import setup, find_packages, find_namespace_packages From 51c4023049c3ef5190cccf05acac1fd9811b0ae7 Mon Sep 17 00:00:00 2001 From: Sadegh Yazdani Date: Wed, 4 Jan 2023 17:45:34 +0330 Subject: [PATCH 06/14] fix: stubs_generator try overwrite_stubs_from_src --- src/obfpkg/core/stub_maker.py | 1 + src/obfpkg/main.py | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/src/obfpkg/core/stub_maker.py b/src/obfpkg/core/stub_maker.py index 7703755..2dbb820 100644 --- a/src/obfpkg/core/stub_maker.py +++ b/src/obfpkg/core/stub_maker.py @@ -63,6 +63,7 @@ def generate(self): return stdout, stderr def overwrite_stubs_from_src(self): + raise NotImplementedError def clean_up(self): diff --git a/src/obfpkg/main.py b/src/obfpkg/main.py index 66772f9..5b309ca 100644 --- a/src/obfpkg/main.py +++ b/src/obfpkg/main.py @@ -101,6 +101,11 @@ def create_stubs_package( verbose=verbose, ) stubs_generator.generate() + try: + stubs_generator.overwrite_stubs_from_src() # TODO: not implemented yet + except NotImplementedError: + print("WARNNING: `stubs_generator.overwrite_stubs_from_src` NOT IMPLEMENTED YET!") + pass # Start Build Package package_generator = Package( From 69ddd31847bcb7776b6ad9d83295cb1d3fc2d59b Mon Sep 17 00:00:00 2001 From: Sadegh Yazdani Date: Thu, 5 Jan 2023 10:42:11 +0330 Subject: [PATCH 07/14] feat: improve utils --- src/obfpkg/utils/__init__.py | 6 ++++-- src/obfpkg/utils/functions.py | 13 +++++++++++++ src/obfpkg/utils/structs.py | 8 ++++---- 3 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 src/obfpkg/utils/functions.py diff --git a/src/obfpkg/utils/__init__.py b/src/obfpkg/utils/__init__.py index 8871852..46da390 100644 --- a/src/obfpkg/utils/__init__.py +++ b/src/obfpkg/utils/__init__.py @@ -1,7 +1,9 @@ __all__ = [ + "Exist", "PathCheck", "PathType", - "Exist", + "remove_intersection_path", ] -from .structs import PathCheck, PathType, Exist +from .functions import remove_intersection_path +from .structs import Exist, PathCheck, PathType diff --git a/src/obfpkg/utils/functions.py b/src/obfpkg/utils/functions.py new file mode 100644 index 0000000..1f46d59 --- /dev/null +++ b/src/obfpkg/utils/functions.py @@ -0,0 +1,13 @@ + + +def remove_intersection_path(path1, path2): + str_path1 = str(path1) + str_path2 = str(path2) + + shrt_path = str_path1 if len(str_path1) < len(str_path2) else str_path2 + long_path = str_path1 if len(str_path1) > len(str_path2) else str_path2 + + shrt_idx = long_path.find(shrt_path) + if shrt_idx == 0: + return long_path.replace(shrt_path, "").lstrip("\\/") + raise ValueError() diff --git a/src/obfpkg/utils/structs.py b/src/obfpkg/utils/structs.py index 957aa76..df92350 100644 --- a/src/obfpkg/utils/structs.py +++ b/src/obfpkg/utils/structs.py @@ -1,10 +1,10 @@ -from os import listdir import shutil -from pathlib import Path -from typing import Optional, Union, Tuple, List, Callable -from dataclasses import dataclass from argparse import ArgumentTypeError +from dataclasses import dataclass from enum import Enum +from os import listdir +from pathlib import Path +from typing import Callable, List, Optional, Tuple, Union @dataclass From 07823efa2f02f8f08751abcba7e055058517f3fa Mon Sep 17 00:00:00 2001 From: Sadegh Yazdani Date: Thu, 5 Jan 2023 10:43:31 +0330 Subject: [PATCH 08/14] feat: implement `overwrite_stubs_from_src` --- src/obfpkg/core/stub_maker.py | 20 +++++++++++++++----- src/obfpkg/main.py | 5 ----- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/obfpkg/core/stub_maker.py b/src/obfpkg/core/stub_maker.py index 2dbb820..481e3be 100644 --- a/src/obfpkg/core/stub_maker.py +++ b/src/obfpkg/core/stub_maker.py @@ -1,7 +1,6 @@ from os import rename, listdir from pathlib import Path -from subprocess import Popen, PIPE -import shutil +from utils import remove_intersection_path STUBS_PACKAGE_DIR_NAME = "stubs-pkg" @@ -12,7 +11,7 @@ class Stubs: def __init__( self, src_path: Path, build_path: Path, package_name: str, verbose: bool = False ): - self.src_path = src_path + self.src_path = src_path.resolve() self.build_path = build_path.resolve() self.package_name = package_name self.verbose = verbose @@ -57,14 +56,25 @@ def generate(self): raise Exception( f"Error while generating stubs: {stderr.decode('utf-8')}\n\nSTDOUT:\n{stdout.decode('utf-8')}" ) - else: + try: + overwrited_pyi_files = self.overwrite_stubs_from_src() + if overwrited_pyi_files and self.verbose: + for item in overwrited_pyi_files: + print(f"The {item!r} overwrited from source project to stubs ") + except NotImplementedError: + print("WARNNING: `overwrite_stubs_from_src` NOT IMPLEMENTED YET!") + pass self._rename() return stdout, stderr def overwrite_stubs_from_src(self): + pyi_files = self.src_path.glob("*/*.pyi") + pure_pypi_paths = [remove_intersection_path(self.src_path, item) for item in pyi_files] - raise NotImplementedError + for item in pure_pypi_paths: + shutil.copy(self.src_path / item, self.build_path / item) + return pure_pypi_paths def clean_up(self): build_abspath = self.build_path.resolve().absolute() diff --git a/src/obfpkg/main.py b/src/obfpkg/main.py index 5b309ca..66772f9 100644 --- a/src/obfpkg/main.py +++ b/src/obfpkg/main.py @@ -101,11 +101,6 @@ def create_stubs_package( verbose=verbose, ) stubs_generator.generate() - try: - stubs_generator.overwrite_stubs_from_src() # TODO: not implemented yet - except NotImplementedError: - print("WARNNING: `stubs_generator.overwrite_stubs_from_src` NOT IMPLEMENTED YET!") - pass # Start Build Package package_generator = Package( From c19ea32afb6ccff56073993416380542fd344b76 Mon Sep 17 00:00:00 2001 From: Sadegh Yazdani Date: Thu, 5 Jan 2023 10:45:07 +0330 Subject: [PATCH 09/14] perf: sort imports --- src/obfpkg/core/stub_maker.py | 7 +++++-- src/obfpkg/main.py | 10 +++++----- template/src_pkg/animal/__init__.pyi | 2 +- template/src_pkg/setup.py | 2 +- template/stubs-pkg/setup.py | 3 +-- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/obfpkg/core/stub_maker.py b/src/obfpkg/core/stub_maker.py index 481e3be..cace37b 100644 --- a/src/obfpkg/core/stub_maker.py +++ b/src/obfpkg/core/stub_maker.py @@ -1,5 +1,8 @@ -from os import rename, listdir +import shutil +from os import listdir, rename from pathlib import Path +from subprocess import PIPE, Popen + from utils import remove_intersection_path STUBS_PACKAGE_DIR_NAME = "stubs-pkg" @@ -64,7 +67,7 @@ def generate(self): except NotImplementedError: print("WARNNING: `overwrite_stubs_from_src` NOT IMPLEMENTED YET!") pass - self._rename() + self._rename() return stdout, stderr diff --git a/src/obfpkg/main.py b/src/obfpkg/main.py index 66772f9..2727539 100644 --- a/src/obfpkg/main.py +++ b/src/obfpkg/main.py @@ -1,16 +1,16 @@ import argparse +import tempfile from os import mkdir from pathlib import Path -import tempfile try: # package style import - from .core import Package, Stubs, Obfuscate - from .utils import PathType, PathCheck, Exist + from .core import Obfuscate, Package, Stubs + from .utils import Exist, PathCheck, PathType except ImportError: # project style import - from core import Package, Stubs, Obfuscate # type: ignore - from utils import PathType, PathCheck, Exist # type: ignore + from core import Obfuscate, Package, Stubs # type: ignore + from utils import Exist, PathCheck, PathType # type: ignore STUBS_PACKAGE_DIR_NAME = "stubs-pkg" MANIFEST_FILE_NAME = "MANIFEST.in" diff --git a/template/src_pkg/animal/__init__.pyi b/template/src_pkg/animal/__init__.pyi index becb717..deeff33 100644 --- a/template/src_pkg/animal/__init__.pyi +++ b/template/src_pkg/animal/__init__.pyi @@ -4,6 +4,6 @@ __all__ = [ "sample_animal", ] +from . import sample_animal from .horse import Horse from .mammalian import Mammal -from . import sample_animal \ No newline at end of file diff --git a/template/src_pkg/setup.py b/template/src_pkg/setup.py index e792377..11e4105 100644 --- a/template/src_pkg/setup.py +++ b/template/src_pkg/setup.py @@ -1,4 +1,4 @@ -from setuptools import setup, find_namespace_packages +from setuptools import find_namespace_packages, setup version = "0.1.0" DESCRIPTION = "A print package" diff --git a/template/stubs-pkg/setup.py b/template/stubs-pkg/setup.py index 1b336f6..330df86 100644 --- a/template/stubs-pkg/setup.py +++ b/template/stubs-pkg/setup.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- -from setuptools import setup, find_packages, find_namespace_packages - +from setuptools import find_namespace_packages, find_packages, setup # Collect package from src_pkg Automatically packages = find_namespace_packages(".") From 449141e3e564ed5047a8afef7f6b482cbe1472d2 Mon Sep 17 00:00:00 2001 From: Sadegh Yazdani Date: Sun, 29 Jan 2023 09:33:55 +0330 Subject: [PATCH 10/14] refactor: make private methods in stubs class --- src/obfpkg/core/stub_maker.py | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/obfpkg/core/stub_maker.py b/src/obfpkg/core/stub_maker.py index cace37b..65c4a11 100644 --- a/src/obfpkg/core/stub_maker.py +++ b/src/obfpkg/core/stub_maker.py @@ -21,7 +21,7 @@ def __init__( self.clean_up() - def _rename(self): + def __rename(self): for i in range(3, 0, -1): try: rename( @@ -59,15 +59,7 @@ def generate(self): raise Exception( f"Error while generating stubs: {stderr.decode('utf-8')}\n\nSTDOUT:\n{stdout.decode('utf-8')}" ) - try: - overwrited_pyi_files = self.overwrite_stubs_from_src() - if overwrited_pyi_files and self.verbose: - for item in overwrited_pyi_files: - print(f"The {item!r} overwrited from source project to stubs ") - except NotImplementedError: - print("WARNNING: `overwrite_stubs_from_src` NOT IMPLEMENTED YET!") - pass - self._rename() + self.__rename() return stdout, stderr From b6429f8cff271b1b29f2dca49dea411c303a0464 Mon Sep 17 00:00:00 2001 From: Sadegh Yazdani Date: Sun, 29 Jan 2023 09:35:15 +0330 Subject: [PATCH 11/14] refactor: make code simpler and break tasks in small funcs --- src/obfpkg/core/stub_maker.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/obfpkg/core/stub_maker.py b/src/obfpkg/core/stub_maker.py index 65c4a11..4e76990 100644 --- a/src/obfpkg/core/stub_maker.py +++ b/src/obfpkg/core/stub_maker.py @@ -21,6 +21,11 @@ def __init__( self.clean_up() + def __log(self, items): + if items and self.verbose: + for item in items: + print(f"The {item!r} overwrited from source project to stubs ") + def __rename(self): for i in range(3, 0, -1): try: @@ -59,16 +64,24 @@ def generate(self): raise Exception( f"Error while generating stubs: {stderr.decode('utf-8')}\n\nSTDOUT:\n{stdout.decode('utf-8')}" ) + + overwrited_pyi_files = self.overwrite_stubs_from_src() + self.__log(overwrited_pyi_files) self.__rename() return stdout, stderr + def __copy(self, items, src: Path, dest: Path): + for item in items: + shutil.copy(src / item, dest / item) + def overwrite_stubs_from_src(self): pyi_files = self.src_path.glob("*/*.pyi") - pure_pypi_paths = [remove_intersection_path(self.src_path, item) for item in pyi_files] + pure_pypi_paths = [ + remove_intersection_path(self.src_path, item) for item in pyi_files + ] + self.__copy(pure_pypi_paths, self.src_path, self.build_path) - for item in pure_pypi_paths: - shutil.copy(self.src_path / item, self.build_path / item) return pure_pypi_paths def clean_up(self): From bde5d7f6d4693c7456c2120eeba302946de2c947 Mon Sep 17 00:00:00 2001 From: Sadegh Yazdani Date: Sun, 29 Jan 2023 09:47:01 +0330 Subject: [PATCH 12/14] refactor: remove unused vars --- src/obfpkg/core/stub_maker.py | 2 -- src/obfpkg/main.py | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/obfpkg/core/stub_maker.py b/src/obfpkg/core/stub_maker.py index 4e76990..b3ef983 100644 --- a/src/obfpkg/core/stub_maker.py +++ b/src/obfpkg/core/stub_maker.py @@ -5,8 +5,6 @@ from utils import remove_intersection_path -STUBS_PACKAGE_DIR_NAME = "stubs-pkg" - class Stubs: """Generate the stubs project files from the source project.""" diff --git a/src/obfpkg/main.py b/src/obfpkg/main.py index 2727539..fbdf035 100644 --- a/src/obfpkg/main.py +++ b/src/obfpkg/main.py @@ -12,7 +12,7 @@ from core import Obfuscate, Package, Stubs # type: ignore from utils import Exist, PathCheck, PathType # type: ignore -STUBS_PACKAGE_DIR_NAME = "stubs-pkg" + MANIFEST_FILE_NAME = "MANIFEST.in" From c690cfd3a912b2a7377a1f2b6bc9c595dc8a9962 Mon Sep 17 00:00:00 2001 From: Sadegh Yazdani Date: Sun, 29 Jan 2023 09:55:05 +0330 Subject: [PATCH 13/14] refactor: make setup.py simpler --- template/src_pkg/setup.py | 19 +------------------ template/stubs-pkg/setup.py | 22 ++-------------------- 2 files changed, 3 insertions(+), 38 deletions(-) diff --git a/template/src_pkg/setup.py b/template/src_pkg/setup.py index 11e4105..0787dbd 100644 --- a/template/src_pkg/setup.py +++ b/template/src_pkg/setup.py @@ -1,29 +1,12 @@ from setuptools import find_namespace_packages, setup -version = "0.1.0" -DESCRIPTION = "A print package" -LONG_DESCRIPTION = """A simple class for print python objects with tails.""" +version = "0.2.0" setup( name="animal", version=version, - description=DESCRIPTION, - long_description=LONG_DESCRIPTION, - author="Sadegh Yazdani", - author_email="m.s.yazdani85@gmail.com", - license="GPLv3", packages=find_namespace_packages(), include_package_data=True, # Importants - install_requires=[], - keywords="printing", - classifiers=[ - "Topic :: Software Development :: Libraries :: Python Modules", - "Topic :: Utilities", - "Development Status :: 4 - Beta", - "Intended Audience :: Developers", - "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", - "Programming Language :: Python :: 3.8", - ], python_requires="~=3.8", ) diff --git a/template/stubs-pkg/setup.py b/template/stubs-pkg/setup.py index 330df86..b441c19 100644 --- a/template/stubs-pkg/setup.py +++ b/template/stubs-pkg/setup.py @@ -7,32 +7,14 @@ original_package_name, _, _ = packages_name.partition("-") -# Going to create for stubs of - +# Create for stubs of setup( name=packages_name, - version="0.1.0", + version="0.2.0", description=f"Type annotations for {original_package_name}", long_description=f"{packages_name} package", - author="Sadegh Yazdani", - author_email="m.s.yazdani85@gmail.com", - license="GPLv3", packages=[x for x in packages], include_package_data=True, # Important - install_requires=[], - classifiers=[ - "Topic :: Software Development :: Libraries :: Python Modules", - "Topic :: Utilities", - "Development Status :: 4 - Beta", - "Intended Audience :: Developers", - "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3.12", - ], python_requires=">=3.8,<3.11", ) From 2b14b308809faa0ade0a820cec9f8547ea23f222 Mon Sep 17 00:00:00 2001 From: Sadegh Yazdani Date: Sun, 29 Jan 2023 10:05:46 +0330 Subject: [PATCH 14/14] docs: add a simple user guide --- README.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ca133a8..b38080e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,17 @@ # Python Obfuscated Package Clean Architecture Template -a clean architecture template for python obfuscated package with stubs \ No newline at end of file + +a clean architecture template for python obfuscated package with stubs + +## Run + +simple run project with the following command: + +```bash +python .\src\obfpkg\main.py -s .\template\src_pkg\ -t .\template\stubs-pkg\ -v + +``` + +Then go to `.\template\dist` and see the outputs! + +1. The `animal` package is the obfuscated package of the animal +2. The `animal_stubs` package for keep readability and see the exist structures and methods in your IDE!