diff --git a/Makefile b/Makefile index 07f4272..b5f3487 100644 --- a/Makefile +++ b/Makefile @@ -58,4 +58,8 @@ endif $(TARGET): $(CURDIR)/main.py +ifeq ($(OS), windows) + pyinstaller --distpath=$(DIST) --workpath=$(CURDIR)/build --onefile --name=$(NAME) $< +else python -m nuitka --standalone --onefile --output-filename=$(NAME) --output-dir=$(DIST) --remove-output $< +endif diff --git a/poetry.lock b/poetry.lock index 19ffd5a..9a0a465 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,15 @@ -# This file is automatically @generated by Poetry 1.5.0 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. + +[[package]] +name = "altgraph" +version = "0.17.3" +description = "Python graph (network) package" +optional = false +python-versions = "*" +files = [ + {file = "altgraph-0.17.3-py2.py3-none-any.whl", hash = "sha256:c8ac1ca6772207179ed8003ce7687757c04b0b71536f81e2ac5755c6226458fe"}, + {file = "altgraph-0.17.3.tar.gz", hash = "sha256:ad33358114df7c9416cdb8fa1eaa5852166c505118717021c6a8c7c7abbd03dd"}, +] [[package]] name = "beautifulsoup4" @@ -290,6 +301,20 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"] [[package]] +name = "macholib" +version = "1.16.2" +description = "Mach-O header analysis and editing" +optional = false +python-versions = "*" +files = [ + {file = "macholib-1.16.2-py2.py3-none-any.whl", hash = "sha256:44c40f2cd7d6726af8fa6fe22549178d3a4dfecc35a9cd15ea916d9c83a688e0"}, + {file = "macholib-1.16.2.tar.gz", hash = "sha256:557bbfa1bb255c20e9abafe7ed6cd8046b48d9525db2f9b77d3122a63a2a8bf8"}, +] + +[package.dependencies] +altgraph = ">=0.17" + +[[package]] name = "markdown-it-py" version = "2.2.0" description = "Python port of markdown-it. Markdown parsing, done right!" @@ -386,6 +411,17 @@ ] [[package]] +name = "pefile" +version = "2023.2.7" +description = "Python PE parsing module" +optional = false +python-versions = ">=3.6.0" +files = [ + {file = "pefile-2023.2.7-py3-none-any.whl", hash = "sha256:da185cd2af68c08a6cd4481f7325ed600a88f6a813bad9dea07ab3ef73d8d8d6"}, + {file = "pefile-2023.2.7.tar.gz", hash = "sha256:82e6114004b3d6911c77c3953e3838654b04511b8b66e8583db70c65998017dc"}, +] + +[[package]] name = "platformdirs" version = "3.5.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." @@ -426,6 +462,61 @@ plugins = ["importlib-metadata"] [[package]] +name = "pyinstaller" +version = "5.11.0" +description = "PyInstaller bundles a Python application and all its dependencies into a single package." +optional = false +python-versions = "<3.12,>=3.7" +files = [ + {file = "pyinstaller-5.11.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:8454bac8f3cb2219a3ce2227fd039bdaf943dcba60e8c55732958ea3a6d81263"}, + {file = "pyinstaller-5.11.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:b3c6299fd7526c6ca87ea5f9017fb1928d47046df0b9f983d6bbd893801010dc"}, + {file = "pyinstaller-5.11.0-py3-none-manylinux2014_i686.whl", hash = "sha256:e359571327bbef434fc61324891399f9117efbb685b5065234eebb01713650a8"}, + {file = "pyinstaller-5.11.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:a445a91b85c9a1ea3985268643a674900dd86f244cc4be4ff4ec4c6367ff99a9"}, + {file = "pyinstaller-5.11.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2a1fe6d0da22f207cfa4b3221fe365503cba071c77aac19f76a75503f67d9ff9"}, + {file = "pyinstaller-5.11.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:b4cac0e7b0d63c6a869843113008f59fd5b38b2959ffa6059e7fac4bb05de92b"}, + {file = "pyinstaller-5.11.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:0af9d11a09ce217d32f95c79c984054457b310671387ff32bae1496876308556"}, + {file = "pyinstaller-5.11.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:b8a4f6834e5c85150948e22c74dd3ab8b98aa4ccdf964d880ac14d2f78d9c1a4"}, + {file = "pyinstaller-5.11.0-py3-none-win32.whl", hash = "sha256:049cdc3524aefb5ca015a63d2c81b6bf1567cc818ac066859fbfde702c6165d3"}, + {file = "pyinstaller-5.11.0-py3-none-win_amd64.whl", hash = "sha256:42fdea67e4c2217cedd54d17d1d402736df3ba718db2b497df65df5a68ae4f93"}, + {file = "pyinstaller-5.11.0-py3-none-win_arm64.whl", hash = "sha256:036a062a228af41f6bb6370a4e87cef34858cc839200a07ace7f8738ef64ad86"}, + {file = "pyinstaller-5.11.0.tar.gz", hash = "sha256:cb87cee0b3c81ccd74d4bf3f4faf03b5e1e39bb91f1a894b2ce4cd22363bf779"}, +] + +[package.dependencies] +altgraph = "*" +macholib = {version = ">=1.8", markers = "sys_platform == \"darwin\""} +pefile = {version = ">=2022.5.30", markers = "sys_platform == \"win32\""} +pyinstaller-hooks-contrib = ">=2021.4" +pywin32-ctypes = {version = ">=0.2.0", markers = "sys_platform == \"win32\""} +setuptools = ">=42.0.0" + +[package.extras] +encryption = ["tinyaes (>=1.0.0)"] +hook-testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"] + +[[package]] +name = "pyinstaller-hooks-contrib" +version = "2023.3" +description = "Community maintained hooks for PyInstaller" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pyinstaller-hooks-contrib-2023.3.tar.gz", hash = "sha256:bb39e1038e3e0972420455e0b39cd9dce73f3d80acaf4bf2b3615fea766ff370"}, + {file = "pyinstaller_hooks_contrib-2023.3-py2.py3-none-any.whl", hash = "sha256:062ad7a1746e1cfc24d3a8c4be4e606fced3b123bda7d419f14fcf7507804b07"}, +] + +[[package]] +name = "pywin32-ctypes" +version = "0.2.0" +description = "" +optional = false +python-versions = "*" +files = [ + {file = "pywin32-ctypes-0.2.0.tar.gz", hash = "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942"}, + {file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"}, +] + +[[package]] name = "requests" version = "2.31.0" description = "Python HTTP for Humans." @@ -465,6 +556,22 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] +name = "setuptools" +version = "67.8.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "setuptools-67.8.0-py3-none-any.whl", hash = "sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f"}, + {file = "setuptools-67.8.0.tar.gz", hash = "sha256:62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + +[[package]] name = "shellingham" version = "1.4.0" description = "Tool to Detect Surrounding Shell" @@ -599,5 +706,5 @@ [metadata] lock-version = "2.0" -python-versions = "^3.11" -content-hash = "fc811e751b43c6f77aa78c1f2dbb626475889f0dbe5fc024c0012127b9d523dd" +python-versions = ">=3.11,<3.12" +content-hash = "edae66edb94a31469e5e21f92f25c0075bb326f1ad8ee4df4b4e89dc6cfae74d" diff --git a/pyproject.toml b/pyproject.toml index c6a0fd6..4271e96 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,7 +17,7 @@ [tool.poetry.dependencies] beautifulsoup4 = "^4.12.2" -python = "^3.11" +python = ">=3.11,<3.12" requests = "^2.29.0" rich = "^13.3.5" typer = "^0.7.0" @@ -26,6 +26,7 @@ black = "^23.3.0" isort = "^5.12.0" nuitka = "^1.6.1" +pyinstaller = "^5.11.0" typer-cli = "^0.0.13" [tool.poetry.scripts] diff --git a/requirements.txt b/requirements.txt index 5880e71..beb20f2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,14 +1,14 @@ -beautifulsoup4==4.12.2 ; python_version >= "3.11" and python_version < "4.0" -certifi==2023.5.7 ; python_version >= "3.11" and python_version < "4.0" -charset-normalizer==3.1.0 ; python_version >= "3.11" and python_version < "4.0" -click==8.1.3 ; python_version >= "3.11" and python_version < "4.0" -colorama==0.4.6 ; python_version >= "3.11" and python_version < "4.0" and platform_system == "Windows" -idna==3.4 ; python_version >= "3.11" and python_version < "4.0" -markdown-it-py==2.2.0 ; python_version >= "3.11" and python_version < "4.0" -mdurl==0.1.2 ; python_version >= "3.11" and python_version < "4.0" -pygments==2.15.1 ; python_version >= "3.11" and python_version < "4.0" -requests==2.31.0 ; python_version >= "3.11" and python_version < "4.0" -rich==13.4.1 ; python_version >= "3.11" and python_version < "4.0" -soupsieve==2.4.1 ; python_version >= "3.11" and python_version < "4.0" -typer==0.7.0 ; python_version >= "3.11" and python_version < "4.0" -urllib3==2.0.2 ; python_version >= "3.11" and python_version < "4.0" +beautifulsoup4==4.12.2 ; python_version >= "3.11" and python_version < "3.12" +certifi==2023.5.7 ; python_version >= "3.11" and python_version < "3.12" +charset-normalizer==3.1.0 ; python_version >= "3.11" and python_version < "3.12" +click==8.1.3 ; python_version >= "3.11" and python_version < "3.12" +colorama==0.4.6 ; python_version >= "3.11" and python_version < "3.12" and platform_system == "Windows" +idna==3.4 ; python_version >= "3.11" and python_version < "3.12" +markdown-it-py==2.2.0 ; python_version >= "3.11" and python_version < "3.12" +mdurl==0.1.2 ; python_version >= "3.11" and python_version < "3.12" +pygments==2.15.1 ; python_version >= "3.11" and python_version < "3.12" +requests==2.31.0 ; python_version >= "3.11" and python_version < "3.12" +rich==13.4.1 ; python_version >= "3.11" and python_version < "3.12" +soupsieve==2.4.1 ; python_version >= "3.11" and python_version < "3.12" +typer==0.7.0 ; python_version >= "3.11" and python_version < "3.12" +urllib3==2.0.2 ; python_version >= "3.11" and python_version < "3.12"