From 7f5d4b37eea798299c92f7a70b050607128657e0 Mon Sep 17 00:00:00 2001 From: scito Date: Fri, 30 Dec 2022 11:14:15 +0100 Subject: [PATCH] initial pyproject.toml --- .editorconfig | 2 +- .vscode/extensions.json | 4 ++- .vscode/launch.json | 40 +++++++++++++++++++++++++ Dockerfile | 4 +++ Dockerfile_no_qr_reader | 4 +++ README.md | 5 ---- pyproject.toml | 57 ++++++++++++++++++++++++++++++++++++ requirements-dev.txt | 11 +++---- setup.cfg | 65 +++++++++++++++++++++++++++++++++++++++++ setup.py | 65 +---------------------------------------- 10 files changed, 181 insertions(+), 76 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 pyproject.toml create mode 100644 setup.cfg diff --git a/.editorconfig b/.editorconfig index 4112077..cc9621a 100644 --- a/.editorconfig +++ b/.editorconfig @@ -11,5 +11,5 @@ insert_final_newline = true indent_size = 4 trim_trailing_whitespace = false -[*.yml] +[*.{yml,toml}] indent_size = 2 diff --git a/.vscode/extensions.json b/.vscode/extensions.json index ba653bc..118b1f5 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,5 +1,7 @@ { "recommendations": [ - "ms-python.python" + "ms-python.python", + "mms-python.isort", + "tamasfe.even-better-toml", ] } diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..80c9b3d --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,40 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python: extract_otp_secret_keys.py", + "type": "python", + "request": "launch", + "program": "extract_otp_secret_keys.py", + "args": [ + "example_export.txt" + ], + "console": "integratedTerminal" + }, + { + "name": "Python: extract_otp_secret_keys.py stdin pic", + "type": "python", + "request": "launch", + "program": "extract_otp_secret_keys.py", + "args": [ + "-", + "<", + "test/test_googleauth_export.png", + ], + "console": "integratedTerminal" + }, + { + "name": "Python: extract_otp_secret_keys.py -C", + "type": "python", + "request": "launch", + "program": "extract_otp_secret_keys.py", + "args": [ + "-v", + ], + "console": "integratedTerminal" + }, + ] +} diff --git a/Dockerfile b/Dockerfile index be1070a..e390a54 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,9 @@ FROM python:3.11-slim-bullseye +# For debugging +# docker run --entrypoint /extract/run_pytest.sh --rm -v "$(pwd)":/files:ro extract_otp_secret_keys +# docker run --entrypoint /bin/bash -it --rm -v "$(pwd)":/files:ro --device="/dev/video0:/dev/video0" --env="DISPLAY" -v /tmp/.X11-unix:/tmp/.X11-unix:ro extract_otp_secret_keys + WORKDIR /extract COPY . . diff --git a/Dockerfile_no_qr_reader b/Dockerfile_no_qr_reader index 1750cd6..7136d8f 100644 --- a/Dockerfile_no_qr_reader +++ b/Dockerfile_no_qr_reader @@ -1,5 +1,9 @@ FROM python:3.11-alpine +# For debugging +# docker run --entrypoint /bin/sh -it --rm -v "$(pwd)":/files:ro extract_otp_secret_keys_no_qr_reader +# docker run --entrypoint /extract/run_pytest.sh --rm -v "$(pwd)":/files:ro extract_otp_secret_keys_no_qr_reader test_extract_otp_secret_keys_pytest.py -k "not qreader" --relaxed + WORKDIR /extract COPY . . diff --git a/README.md b/README.md index 770364a..c65125e 100644 --- a/README.md +++ b/README.md @@ -353,16 +353,11 @@ docker run --rm -v "$(pwd)":/files:ro -i extract_otp_secret_keys = < example_exp docker run --rm -v "$(pwd)":/files:ro -i --device="/dev/video0:/dev/video0" --env="DISPLAY" -v /tmp/.X11-unix:/tmp/.X11-unix:ro extract_otp_secret_keys docker run --pull always --rm -v "$(pwd)":/files:ro -i --device="/dev/video0:/dev/video0" --env="DISPLAY" -v /tmp/.X11-unix:/tmp/.X11-unix:ro scit0/extract_otp_secret_keys docker run --entrypoint /bin/bash -it --rm -v "$(pwd)":/files:ro extract_otp_secret_keys -docker run --entrypoint /bin/bash -it --rm -v "$(pwd)":/files:ro --device="/dev/video0:/dev/video0" --env="DISPLAY" -v /tmp/.X11-unix:/tmp/.X11-unix:ro scit0/extract_otp_secret_keys docker run --pull always --rm -v "$(pwd)":/files:ro -i scit0/extract_otp_secret_keys -docker run --entrypoint /extract/run_pytest.sh --rm -v "$(pwd)":/files:ro extract_otp_secret_keys docker login -uscit0 docker build . -t extract_otp_secret_keys_no_qr_reader -f Dockerfile_no_qr_reader --pull docker build . -t extract_otp_secret_keys_no_qr_reader -f Dockerfile_no_qr_reader --pull --build-arg RUN_TESTS=false -docker run --entrypoint /bin/sh -it --rm -v "$(pwd)":/files:ro extract_otp_secret_keys_no_qr_reader -docker run --entrypoint /extract/run_pytest.sh --rm -v "$(pwd)":/files:ro extract_otp_secret_keys_no_qr_reader -docker run --entrypoint /extract/run_pytest.sh --rm -v "$(pwd)":/files:ro extract_otp_secret_keys_no_qr_reader test_extract_otp_secret_keys_pytest.py -k "not qreader" --relaxed docker run --entrypoint /extract/run_pytest.sh --rm -v "$(pwd)":/files:ro scit0/extract_otp_secret_keys_no_qr_reader test_extract_otp_secret_keys_pytest.py -k "not qreader" --relaxed docker run --rm -v "$(pwd)":/files:ro extract_otp_secret_keys_no_qr_reader example_export.txt docker run --rm -v "$(pwd)":/files:ro -i extract_otp_secret_keys_no_qr_reader - < example_export.txt diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..3fc4379 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,57 @@ +[build-system] +requires = [ + "setuptools>=64.0.0", "wheel>=0.37.0", "pip", "setuptools-scm", +] +build-backend = "setuptools.build_meta" + +[project] +name = "extract_otp_secret_keys" +# https://pypi.org/classifiers/ +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Environment :: Console", + "Environment :: X11 Applications :: Qt", + "Environment :: Win32 (MS Windows)", + "Topic :: System :: Archiving :: Backup", + "Topic :: Utilities", + "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", + "Intended Audience :: End Users/Desktop", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Natural Language :: English", + "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", +] +version = "1.6.0" +dependencies = [ + "protobuf", + "qrcode", + "Pillow", + "qreader", + "pyzbar", + "opencv-python", + "typing_extensions; python_version<='3.7'", +] +description = "Extract two-factor authentication (2FA, TFA, OTP) secret keys from export QR codes of 'Google Authenticator' app" +# TODO dynamic = ["version"] +keywords = ["python", "security", "json", "otp", "csv", "protobuf", "qrcode", "two-factor", "totp", "google-authenticator", "recovery", "proto3", "mfa", "two-factor-authentication", "tfa", "qr-codes", "otpauth", "2fa", "security-tools"] +license = {text = "GNU General Public License v3 (GPLv3)"} +readme = "README.md" +authors = [{name = "scito", email = "info@scito.ch"}] +maintainers = [{name = "scito", email = "info@scito.ch"}] +requires-python = ">=3.7, <4" +scripts = {extract_otp_secret_keys = "extract_otp_secret_keys:sys_main"} +urls = {Project-URL = "https://github.com/scito/extract_otp_secret_keys", Bug-Reports = "https://github.com/scito/extract_otp_secret_keys/issues", Source = "https://github.com/scito/extract_otp_secret_keys" } + +[tool.setuptools] +py-modules = ["extract_otp_secret_keys", "protobuf_generated_python.google_auth_pb2"] + +[tool.setuptools.dynamic] +# TODO version = {attr = "extract_otp_secret_keys.VERSION"} + +[tool.setuptools.package-data] +"*" = ["*.txt", "*.json", "*.png", "*.md"] diff --git a/requirements-dev.txt b/requirements-dev.txt index 9dc315b..fce22e5 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,9 +1,10 @@ -wheel -pytest flake8 -pylint -pytest-mock -pytest-cov mypy types-protobuf +pylint +pytest +pytest-mock +pytest-cov setuptools +wheel +build diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..696853e --- /dev/null +++ b/setup.cfg @@ -0,0 +1,65 @@ +[metadata] +name = extract_otp_secret_keys +version = 1.6.0 +long_description = file: README.md +description = Extract two-factor authentication (2FA, TFA, OTP) secret keys from export QR codes of "Google Authenticator" app +long_description_content_type = text/markdown +url = https://github.com/scito/extract_otp_secret_keys +author = scito +author_email = info@scito.ch +maintainer = scito +maintainer_email = info@scito.ch +license = GNU General Public License v3 (GPLv3) +keywords = python security json otp csv protobuf qrcode two-factor totp google-authenticator recovery proto3 mfa two-factor-authentication tfa qr-codes otpauth 2fa security-tools + +# https://pypi.org/classifiers/ +classifiers = + Development Status :: 5 - Production/Stable + Environment :: Console + Environment :: X11 Applications :: Qt + Environment :: Win32 (MS Windows) + Topic :: System :: Archiving :: Backup + Topic :: Utilities + 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 + Intended Audience :: End Users/Desktop + Intended Audience :: Developers + Intended Audience :: System Administrators + Programming Language :: Python + Natural Language :: English + License :: OSI Approved :: GNU General Public License v3 (GPLv3) + +[options] +python_requires = >=3.7, <4 +py_modules = extract_otp_secret_keys, protobuf_generated_python.google_auth_pb2 +# install_requires = +# protobuf +# qrcode +# Pillow +# qreader +# pyzbar +# opencv-python +# typing_extensions;python_version<='3.7' +packages = find: +package_dir = + = . +project_urls = + Bug Reports = https://github.com/scito/extract_otp_secret_keys/issues + Source = https://github.com/scito/extract_otp_secret_keys + +# [options.entry_points] +# console_scripts = +# extract_otp_secret_keys = extract_otp_secret_keys:sys_main + +[options.packages.find] +where = "." + +[options.package_data] +* = + *.txt + *.json + *.png + *.md diff --git a/setup.py b/setup.py index 0a93a28..05a37bb 100644 --- a/setup.py +++ b/setup.py @@ -1,68 +1,5 @@ -import pathlib from setuptools import setup +# compatibility with legacy builds or versions of tools that don’t support certain packaging standards setup( - name='extract_otp_secret_keys', - version='1.6.0', - description='Extract two-factor authentication (2FA, TFA, OTP) secret keys from export QR codes of "Google Authenticator" app', - - long_description=(pathlib.Path(__file__).parent / 'README.md').read_text(), - long_description_content_type='text/markdown', - - url='https://github.com/scito/extract_otp_secret_keys', - author='scito', - author_email='info@scito.ch', - - # https://pypi.org/classifiers/ - classifiers=[ - 'Development Status :: 5 - Production/Stable', - - 'Environment :: Console', - 'Environment :: X11 Applications :: Qt', - 'Environment :: Win32 (MS Windows)', - 'Environment :: MacOS X', - 'Topic :: System :: Archiving :: Backup', - 'Topic :: Utilities', - - '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', - - 'Intended Audience :: End Users/Desktop', - 'Intended Audience :: Developers', - 'Intended Audience :: System Administrators', - - 'Programming Language :: Python', - 'Natural Language :: English', - 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', - ], - - keywords='python security json otp csv protobuf qrcode two-factor totp google-authenticator recovery proto3 mfa two-factor-authentication tfa qr-codes otpauth 2fa security-tools', - - py_modules=['extract_otp_secret_keys', 'protobuf_generated_python.google_auth_pb2'], - entry_points={ - 'console_scripts': [ - 'extract_otp_secret_keys = extract_otp_secret_keys:sys_main', - ] - }, - - python_requires='>=3.7, <4', - install_requires=[ - "protobuf", - "qrcode", - "Pillow", - "qreader", - "pyzbar", - "opencv-python", - "typing_extensions;python_version<='3.7'" - ], - - project_urls={ - 'Bug Reports': 'https://github.com/scito/extract_otp_secret_keys/issues', - 'Source': 'https://github.com/scito/extract_otp_secret_keys', - }, - - license='GNU General Public License v3 (GPLv3)', )