diff --git a/.gitignore b/.gitignore index b278b62..78eedec 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ testdata/repositories/ !testdata/repositories/.gitkeep .idea *.iml +.DS_store +.DS_Store diff --git a/.snapshots/TestParse-click_signed_wheel b/.snapshots/TestParse-click_signed_wheel index ea73243..f3994f3 100644 --- a/.snapshots/TestParse-click_signed_wheel +++ b/.snapshots/TestParse-click_signed_wheel @@ -73,8 +73,8 @@ (string) (len=3) "py3" }, (string) (len=13) "requires_dist": ([]string) (len=2) { - (string) (len=39) "colorama ; platform_system == \"Windows\"", - (string) (len=43) "importlib-metadata ; python_version < \"3.8\"" + (string) (len=38) "colorama; platform_system == \"Windows\"", + (string) (len=42) "importlib-metadata; python_version < \"3.8\"" }, (string) (len=15) "requires_python": ([]string) (len=1) { (string) (len=5) ">=3.7" diff --git a/.snapshots/TestParse-click_unsigned_wheel b/.snapshots/TestParse-click_unsigned_wheel index b371a7d..ac3dd56 100644 --- a/.snapshots/TestParse-click_unsigned_wheel +++ b/.snapshots/TestParse-click_unsigned_wheel @@ -73,8 +73,8 @@ (string) (len=3) "py3" }, (string) (len=13) "requires_dist": ([]string) (len=2) { - (string) (len=39) "colorama ; platform_system == \"Windows\"", - (string) (len=43) "importlib-metadata ; python_version < \"3.8\"" + (string) (len=38) "colorama; platform_system == \"Windows\"", + (string) (len=42) "importlib-metadata; python_version < \"3.8\"" }, (string) (len=15) "requires_python": ([]string) (len=1) { (string) (len=5) ">=3.7" diff --git a/.snapshots/TestParse-configparser_signed_wheel b/.snapshots/TestParse-configparser_signed_wheel index d3e683f..8632140 100644 --- a/.snapshots/TestParse-configparser_signed_wheel +++ b/.snapshots/TestParse-configparser_signed_wheel @@ -65,27 +65,27 @@ (string) (len=1) "1" }, (string) (len=14) "provides_extra": ([]string) (len=2) { - (string) (len=4) "docs", - (string) (len=7) "testing" + (string) (len=7) "testing", + (string) (len=4) "docs" }, (string) (len=9) "pyversion": ([]string) (len=1) { (string) (len=3) "py3" }, (string) (len=13) "requires_dist": ([]string) (len=14) { - (string) (len=30) "sphinx >=3.5 ; extra == 'docs'", - (string) (len=40) "jaraco.packaging >=9.3 ; extra == 'docs'", - (string) (len=34) "rst.linker >=1.9 ; extra == 'docs'", - (string) (len=22) "furo ; extra == 'docs'", - (string) (len=29) "sphinx-lint ; extra == 'docs'", - (string) (len=39) "jaraco.tidelift >=1.4 ; extra == 'docs'", - (string) (len=31) "pytest >=6 ; extra == 'testing'", - (string) (len=43) "pytest-checkdocs >=2.4 ; extra == 'testing'", - (string) (len=31) "pytest-cov ; extra == 'testing'", - (string) (len=41) "pytest-enabler >=2.2 ; extra == 'testing'", - (string) (len=32) "pytest-ruff ; extra == 'testing'", - (string) (len=36) "types-backports ; extra == 'testing'", - (string) (len=88) "pytest-black >=0.3.7 ; (platform_python_implementation != \"PyPy\") and extra == 'testing'", - (string) (len=87) "pytest-mypy >=0.9.1 ; (platform_python_implementation != \"PyPy\") and extra == 'testing'" + (string) (len=29) "pytest>=6; extra == \"testing\"", + (string) (len=41) "pytest-checkdocs>=2.4; extra == \"testing\"", + (string) (len=84) "pytest-black>=0.3.7; platform_python_implementation != \"PyPy\" and extra == \"testing\"", + (string) (len=30) "pytest-cov; extra == \"testing\"", + (string) (len=83) "pytest-mypy>=0.9.1; platform_python_implementation != \"PyPy\" and extra == \"testing\"", + (string) (len=39) "pytest-enabler>=2.2; extra == \"testing\"", + (string) (len=31) "pytest-ruff; extra == \"testing\"", + (string) (len=35) "types-backports; extra == \"testing\"", + (string) (len=28) "sphinx>=3.5; extra == \"docs\"", + (string) (len=38) "jaraco.packaging>=9.3; extra == \"docs\"", + (string) (len=32) "rst.linker>=1.9; extra == \"docs\"", + (string) (len=21) "furo; extra == \"docs\"", + (string) (len=28) "sphinx-lint; extra == \"docs\"", + (string) (len=37) "jaraco.tidelift>=1.4; extra == \"docs\"" }, (string) (len=15) "requires_python": ([]string) (len=1) { (string) (len=5) ">=3.8" diff --git a/.snapshots/TestParse-configparser_unsigned_wheel b/.snapshots/TestParse-configparser_unsigned_wheel index 8bd597b..e41c106 100644 --- a/.snapshots/TestParse-configparser_unsigned_wheel +++ b/.snapshots/TestParse-configparser_unsigned_wheel @@ -65,27 +65,27 @@ (string) (len=1) "1" }, (string) (len=14) "provides_extra": ([]string) (len=2) { - (string) (len=4) "docs", - (string) (len=7) "testing" + (string) (len=7) "testing", + (string) (len=4) "docs" }, (string) (len=9) "pyversion": ([]string) (len=1) { (string) (len=3) "py3" }, (string) (len=13) "requires_dist": ([]string) (len=14) { - (string) (len=30) "sphinx >=3.5 ; extra == 'docs'", - (string) (len=40) "jaraco.packaging >=9.3 ; extra == 'docs'", - (string) (len=34) "rst.linker >=1.9 ; extra == 'docs'", - (string) (len=22) "furo ; extra == 'docs'", - (string) (len=29) "sphinx-lint ; extra == 'docs'", - (string) (len=39) "jaraco.tidelift >=1.4 ; extra == 'docs'", - (string) (len=31) "pytest >=6 ; extra == 'testing'", - (string) (len=43) "pytest-checkdocs >=2.4 ; extra == 'testing'", - (string) (len=31) "pytest-cov ; extra == 'testing'", - (string) (len=41) "pytest-enabler >=2.2 ; extra == 'testing'", - (string) (len=32) "pytest-ruff ; extra == 'testing'", - (string) (len=36) "types-backports ; extra == 'testing'", - (string) (len=88) "pytest-black >=0.3.7 ; (platform_python_implementation != \"PyPy\") and extra == 'testing'", - (string) (len=87) "pytest-mypy >=0.9.1 ; (platform_python_implementation != \"PyPy\") and extra == 'testing'" + (string) (len=29) "pytest>=6; extra == \"testing\"", + (string) (len=41) "pytest-checkdocs>=2.4; extra == \"testing\"", + (string) (len=84) "pytest-black>=0.3.7; platform_python_implementation != \"PyPy\" and extra == \"testing\"", + (string) (len=30) "pytest-cov; extra == \"testing\"", + (string) (len=83) "pytest-mypy>=0.9.1; platform_python_implementation != \"PyPy\" and extra == \"testing\"", + (string) (len=39) "pytest-enabler>=2.2; extra == \"testing\"", + (string) (len=31) "pytest-ruff; extra == \"testing\"", + (string) (len=35) "types-backports; extra == \"testing\"", + (string) (len=28) "sphinx>=3.5; extra == \"docs\"", + (string) (len=38) "jaraco.packaging>=9.3; extra == \"docs\"", + (string) (len=32) "rst.linker>=1.9; extra == \"docs\"", + (string) (len=21) "furo; extra == \"docs\"", + (string) (len=28) "sphinx-lint; extra == \"docs\"", + (string) (len=37) "jaraco.tidelift>=1.4; extra == \"docs\"" }, (string) (len=15) "requires_python": ([]string) (len=1) { (string) (len=5) ">=3.8" diff --git a/.snapshots/TestParse-coveragepy_signed_wheel b/.snapshots/TestParse-coveragepy_signed_wheel index 05f7d59..98a02a5 100644 --- a/.snapshots/TestParse-coveragepy_signed_wheel +++ b/.snapshots/TestParse-coveragepy_signed_wheel @@ -87,7 +87,7 @@ (string) (len=3) "py3" }, (string) (len=13) "requires_dist": ([]string) (len=1) { - (string) (len=22) "toml ; extra == 'toml'" + (string) (len=21) "toml; extra == \"toml\"" }, (string) (len=15) "requires_python": ([]string) (len=1) { (string) (len=54) ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" diff --git a/.snapshots/TestParse-coveragepy_unsigned_wheel b/.snapshots/TestParse-coveragepy_unsigned_wheel index ab7edd5..738e517 100644 --- a/.snapshots/TestParse-coveragepy_unsigned_wheel +++ b/.snapshots/TestParse-coveragepy_unsigned_wheel @@ -87,7 +87,7 @@ (string) (len=3) "py3" }, (string) (len=13) "requires_dist": ([]string) (len=1) { - (string) (len=22) "toml ; extra == 'toml'" + (string) (len=21) "toml; extra == \"toml\"" }, (string) (len=15) "requires_python": ([]string) (len=1) { (string) (len=54) ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" diff --git a/.snapshots/TestParse-importlib_metadata_signed_wheel b/.snapshots/TestParse-importlib_metadata_signed_wheel index c0f46a6..7c16966 100644 --- a/.snapshots/TestParse-importlib_metadata_signed_wheel +++ b/.snapshots/TestParse-importlib_metadata_signed_wheel @@ -62,36 +62,36 @@ (string) (len=1) "1" }, (string) (len=14) "provides_extra": ([]string) (len=3) { + (string) (len=7) "testing", (string) (len=4) "docs", - (string) (len=4) "perf", - (string) (len=7) "testing" + (string) (len=4) "perf" }, (string) (len=9) "pyversion": ([]string) (len=1) { (string) (len=3) "py3" }, (string) (len=13) "requires_dist": ([]string) (len=22) { - (string) (len=10) "zipp >=0.5", - (string) (len=50) "typing-extensions >=3.6.4 ; python_version < \"3.8\"", - (string) (len=30) "sphinx >=3.5 ; extra == 'docs'", - (string) (len=31) "sphinx <7.2.5 ; extra == 'docs'", - (string) (len=40) "jaraco.packaging >=9.3 ; extra == 'docs'", - (string) (len=34) "rst.linker >=1.9 ; extra == 'docs'", - (string) (len=22) "furo ; extra == 'docs'", - (string) (len=29) "sphinx-lint ; extra == 'docs'", - (string) (len=39) "jaraco.tidelift >=1.4 ; extra == 'docs'", - (string) (len=25) "ipython ; extra == 'perf'", - (string) (len=31) "pytest >=6 ; extra == 'testing'", - (string) (len=43) "pytest-checkdocs >=2.4 ; extra == 'testing'", - (string) (len=31) "pytest-cov ; extra == 'testing'", - (string) (len=41) "pytest-enabler >=2.2 ; extra == 'testing'", - (string) (len=32) "pytest-ruff ; extra == 'testing'", - (string) (len=30) "packaging ; extra == 'testing'", - (string) (len=29) "pyfakefs ; extra == 'testing'", - (string) (len=33) "flufl.flake8 ; extra == 'testing'", - (string) (len=40) "pytest-perf >=0.9.2 ; extra == 'testing'", - (string) (len=88) "pytest-black >=0.3.7 ; (platform_python_implementation != \"PyPy\") and extra == 'testing'", - (string) (len=87) "pytest-mypy >=0.9.1 ; (platform_python_implementation != \"PyPy\") and extra == 'testing'", - (string) (len=75) "importlib-resources >=1.3 ; (python_version < \"3.9\") and extra == 'testing'" + (string) (len=9) "zipp>=0.5", + (string) (len=48) "typing-extensions>=3.6.4; python_version < \"3.8\"", + (string) (len=29) "pytest>=6; extra == \"testing\"", + (string) (len=41) "pytest-checkdocs>=2.4; extra == \"testing\"", + (string) (len=84) "pytest-black>=0.3.7; platform_python_implementation != \"PyPy\" and extra == \"testing\"", + (string) (len=30) "pytest-cov; extra == \"testing\"", + (string) (len=83) "pytest-mypy>=0.9.1; platform_python_implementation != \"PyPy\" and extra == \"testing\"", + (string) (len=39) "pytest-enabler>=2.2; extra == \"testing\"", + (string) (len=31) "pytest-ruff; extra == \"testing\"", + (string) (len=71) "importlib_resources>=1.3; python_version < \"3.9\" and extra == \"testing\"", + (string) (len=29) "packaging; extra == \"testing\"", + (string) (len=28) "pyfakefs; extra == \"testing\"", + (string) (len=32) "flufl.flake8; extra == \"testing\"", + (string) (len=38) "pytest-perf>=0.9.2; extra == \"testing\"", + (string) (len=28) "sphinx>=3.5; extra == \"docs\"", + (string) (len=29) "sphinx<7.2.5; extra == \"docs\"", + (string) (len=38) "jaraco.packaging>=9.3; extra == \"docs\"", + (string) (len=32) "rst.linker>=1.9; extra == \"docs\"", + (string) (len=21) "furo; extra == \"docs\"", + (string) (len=28) "sphinx-lint; extra == \"docs\"", + (string) (len=37) "jaraco.tidelift>=1.4; extra == \"docs\"", + (string) (len=24) "ipython; extra == \"perf\"" }, (string) (len=15) "requires_python": ([]string) (len=1) { (string) (len=5) ">=3.8" diff --git a/.snapshots/TestParse-importlib_metadata_unsigned_wheel b/.snapshots/TestParse-importlib_metadata_unsigned_wheel index 1e50d04..6182aa6 100644 --- a/.snapshots/TestParse-importlib_metadata_unsigned_wheel +++ b/.snapshots/TestParse-importlib_metadata_unsigned_wheel @@ -62,36 +62,36 @@ (string) (len=1) "1" }, (string) (len=14) "provides_extra": ([]string) (len=3) { + (string) (len=7) "testing", (string) (len=4) "docs", - (string) (len=4) "perf", - (string) (len=7) "testing" + (string) (len=4) "perf" }, (string) (len=9) "pyversion": ([]string) (len=1) { (string) (len=3) "py3" }, (string) (len=13) "requires_dist": ([]string) (len=22) { - (string) (len=10) "zipp >=0.5", - (string) (len=50) "typing-extensions >=3.6.4 ; python_version < \"3.8\"", - (string) (len=30) "sphinx >=3.5 ; extra == 'docs'", - (string) (len=31) "sphinx <7.2.5 ; extra == 'docs'", - (string) (len=40) "jaraco.packaging >=9.3 ; extra == 'docs'", - (string) (len=34) "rst.linker >=1.9 ; extra == 'docs'", - (string) (len=22) "furo ; extra == 'docs'", - (string) (len=29) "sphinx-lint ; extra == 'docs'", - (string) (len=39) "jaraco.tidelift >=1.4 ; extra == 'docs'", - (string) (len=25) "ipython ; extra == 'perf'", - (string) (len=31) "pytest >=6 ; extra == 'testing'", - (string) (len=43) "pytest-checkdocs >=2.4 ; extra == 'testing'", - (string) (len=31) "pytest-cov ; extra == 'testing'", - (string) (len=41) "pytest-enabler >=2.2 ; extra == 'testing'", - (string) (len=32) "pytest-ruff ; extra == 'testing'", - (string) (len=30) "packaging ; extra == 'testing'", - (string) (len=29) "pyfakefs ; extra == 'testing'", - (string) (len=33) "flufl.flake8 ; extra == 'testing'", - (string) (len=40) "pytest-perf >=0.9.2 ; extra == 'testing'", - (string) (len=88) "pytest-black >=0.3.7 ; (platform_python_implementation != \"PyPy\") and extra == 'testing'", - (string) (len=87) "pytest-mypy >=0.9.1 ; (platform_python_implementation != \"PyPy\") and extra == 'testing'", - (string) (len=75) "importlib-resources >=1.3 ; (python_version < \"3.9\") and extra == 'testing'" + (string) (len=9) "zipp>=0.5", + (string) (len=48) "typing-extensions>=3.6.4; python_version < \"3.8\"", + (string) (len=29) "pytest>=6; extra == \"testing\"", + (string) (len=41) "pytest-checkdocs>=2.4; extra == \"testing\"", + (string) (len=84) "pytest-black>=0.3.7; platform_python_implementation != \"PyPy\" and extra == \"testing\"", + (string) (len=30) "pytest-cov; extra == \"testing\"", + (string) (len=83) "pytest-mypy>=0.9.1; platform_python_implementation != \"PyPy\" and extra == \"testing\"", + (string) (len=39) "pytest-enabler>=2.2; extra == \"testing\"", + (string) (len=31) "pytest-ruff; extra == \"testing\"", + (string) (len=71) "importlib_resources>=1.3; python_version < \"3.9\" and extra == \"testing\"", + (string) (len=29) "packaging; extra == \"testing\"", + (string) (len=28) "pyfakefs; extra == \"testing\"", + (string) (len=32) "flufl.flake8; extra == \"testing\"", + (string) (len=38) "pytest-perf>=0.9.2; extra == \"testing\"", + (string) (len=28) "sphinx>=3.5; extra == \"docs\"", + (string) (len=29) "sphinx<7.2.5; extra == \"docs\"", + (string) (len=38) "jaraco.packaging>=9.3; extra == \"docs\"", + (string) (len=32) "rst.linker>=1.9; extra == \"docs\"", + (string) (len=21) "furo; extra == \"docs\"", + (string) (len=28) "sphinx-lint; extra == \"docs\"", + (string) (len=37) "jaraco.tidelift>=1.4; extra == \"docs\"", + (string) (len=24) "ipython; extra == \"perf\"" }, (string) (len=15) "requires_python": ([]string) (len=1) { (string) (len=5) ">=3.8" diff --git a/.snapshots/TestParse-matplotlib_signed_wheel b/.snapshots/TestParse-matplotlib_signed_wheel index 2124980..efbb9d8 100644 --- a/.snapshots/TestParse-matplotlib_signed_wheel +++ b/.snapshots/TestParse-matplotlib_signed_wheel @@ -82,16 +82,16 @@ (string) (len=5) "cp312" }, (string) (len=13) "requires_dist": ([]string) (len=10) { - (string) (len=17) "contourpy >=1.0.1", - (string) (len=13) "cycler >=0.10", - (string) (len=18) "fonttools >=4.22.0", - (string) (len=18) "kiwisolver >=1.3.1", - (string) (len=15) "numpy <2,>=1.21", - (string) (len=16) "packaging >=20.0", - (string) (len=10) "pillow >=8", - (string) (len=17) "pyparsing >=2.3.1", - (string) (len=21) "python-dateutil >=2.7", - (string) (len=51) "importlib-resources >=3.2.0 ; python_version<\"3.10\"" + (string) (len=16) "contourpy>=1.0.1", + (string) (len=12) "cycler>=0.10", + (string) (len=17) "fonttools>=4.22.0", + (string) (len=17) "kiwisolver>=1.3.1", + (string) (len=14) "numpy<2,>=1.21", + (string) (len=15) "packaging>=20.0", + (string) (len=9) "pillow>=8", + (string) (len=16) "pyparsing>=2.3.1", + (string) (len=20) "python-dateutil>=2.7", + (string) (len=51) "importlib-resources>=3.2.0; python_version < \"3.10\"" }, (string) (len=15) "requires_python": ([]string) (len=1) { (string) (len=5) ">=3.9" diff --git a/.snapshots/TestParse-matplotlib_unsigned_wheel b/.snapshots/TestParse-matplotlib_unsigned_wheel index 622d98c..40b7ffe 100644 --- a/.snapshots/TestParse-matplotlib_unsigned_wheel +++ b/.snapshots/TestParse-matplotlib_unsigned_wheel @@ -82,16 +82,16 @@ (string) (len=5) "cp312" }, (string) (len=13) "requires_dist": ([]string) (len=10) { - (string) (len=17) "contourpy >=1.0.1", - (string) (len=13) "cycler >=0.10", - (string) (len=18) "fonttools >=4.22.0", - (string) (len=18) "kiwisolver >=1.3.1", - (string) (len=15) "numpy <2,>=1.21", - (string) (len=16) "packaging >=20.0", - (string) (len=10) "pillow >=8", - (string) (len=17) "pyparsing >=2.3.1", - (string) (len=21) "python-dateutil >=2.7", - (string) (len=51) "importlib-resources >=3.2.0 ; python_version<\"3.10\"" + (string) (len=16) "contourpy>=1.0.1", + (string) (len=12) "cycler>=0.10", + (string) (len=17) "fonttools>=4.22.0", + (string) (len=17) "kiwisolver>=1.3.1", + (string) (len=14) "numpy<2,>=1.21", + (string) (len=15) "packaging>=20.0", + (string) (len=9) "pillow>=8", + (string) (len=16) "pyparsing>=2.3.1", + (string) (len=20) "python-dateutil>=2.7", + (string) (len=51) "importlib-resources>=3.2.0; python_version < \"3.10\"" }, (string) (len=15) "requires_python": ([]string) (len=1) { (string) (len=5) ">=3.9" diff --git a/.snapshots/TestParse-pytest_signed_wheel b/.snapshots/TestParse-pytest_signed_wheel index 82cee6c..ddc3da8 100644 --- a/.snapshots/TestParse-pytest_signed_wheel +++ b/.snapshots/TestParse-pytest_signed_wheel @@ -95,20 +95,20 @@ (string) (len=13) "requires_dist": ([]string) (len=16) { (string) (len=9) "iniconfig", (string) (len=9) "packaging", - (string) (len=18) "pluggy <2.0,>=0.12", - (string) (len=51) "exceptiongroup >=1.0.0rc8 ; python_version < \"3.11\"", - (string) (len=39) "tomli >=1.0.0 ; python_version < \"3.11\"", - (string) (len=50) "importlib-metadata >=0.12 ; python_version < \"3.8\"", - (string) (len=34) "colorama ; sys_platform == \"win32\"", - (string) (len=32) "argcomplete ; extra == 'testing'", - (string) (len=35) "attrs >=19.2.0 ; extra == 'testing'", - (string) (len=38) "hypothesis >=3.56 ; extra == 'testing'", - (string) (len=25) "mock ; extra == 'testing'", - (string) (len=25) "nose ; extra == 'testing'", - (string) (len=37) "pygments >=2.7.2 ; extra == 'testing'", - (string) (len=29) "requests ; extra == 'testing'", - (string) (len=31) "setuptools ; extra == 'testing'", - (string) (len=30) "xmlschema ; extra == 'testing'" + (string) (len=17) "pluggy<2.0,>=0.12", + (string) (len=33) "colorama; sys_platform == \"win32\"", + (string) (len=49) "exceptiongroup>=1.0.0rc8; python_version < \"3.11\"", + (string) (len=48) "importlib-metadata>=0.12; python_version < \"3.8\"", + (string) (len=37) "tomli>=1.0.0; python_version < \"3.11\"", + (string) (len=31) "argcomplete; extra == \"testing\"", + (string) (len=33) "attrs>=19.2.0; extra == \"testing\"", + (string) (len=36) "hypothesis>=3.56; extra == \"testing\"", + (string) (len=24) "mock; extra == \"testing\"", + (string) (len=24) "nose; extra == \"testing\"", + (string) (len=35) "pygments>=2.7.2; extra == \"testing\"", + (string) (len=28) "requests; extra == \"testing\"", + (string) (len=30) "setuptools; extra == \"testing\"", + (string) (len=29) "xmlschema; extra == \"testing\"" }, (string) (len=15) "requires_python": ([]string) (len=1) { (string) (len=5) ">=3.7" diff --git a/.snapshots/TestParse-pytest_unsigned_wheel b/.snapshots/TestParse-pytest_unsigned_wheel index e72aa93..05c6db6 100644 --- a/.snapshots/TestParse-pytest_unsigned_wheel +++ b/.snapshots/TestParse-pytest_unsigned_wheel @@ -95,20 +95,20 @@ (string) (len=13) "requires_dist": ([]string) (len=16) { (string) (len=9) "iniconfig", (string) (len=9) "packaging", - (string) (len=18) "pluggy <2.0,>=0.12", - (string) (len=51) "exceptiongroup >=1.0.0rc8 ; python_version < \"3.11\"", - (string) (len=39) "tomli >=1.0.0 ; python_version < \"3.11\"", - (string) (len=50) "importlib-metadata >=0.12 ; python_version < \"3.8\"", - (string) (len=34) "colorama ; sys_platform == \"win32\"", - (string) (len=32) "argcomplete ; extra == 'testing'", - (string) (len=35) "attrs >=19.2.0 ; extra == 'testing'", - (string) (len=38) "hypothesis >=3.56 ; extra == 'testing'", - (string) (len=25) "mock ; extra == 'testing'", - (string) (len=25) "nose ; extra == 'testing'", - (string) (len=37) "pygments >=2.7.2 ; extra == 'testing'", - (string) (len=29) "requests ; extra == 'testing'", - (string) (len=31) "setuptools ; extra == 'testing'", - (string) (len=30) "xmlschema ; extra == 'testing'" + (string) (len=17) "pluggy<2.0,>=0.12", + (string) (len=33) "colorama; sys_platform == \"win32\"", + (string) (len=49) "exceptiongroup>=1.0.0rc8; python_version < \"3.11\"", + (string) (len=48) "importlib-metadata>=0.12; python_version < \"3.8\"", + (string) (len=37) "tomli>=1.0.0; python_version < \"3.11\"", + (string) (len=31) "argcomplete; extra == \"testing\"", + (string) (len=33) "attrs>=19.2.0; extra == \"testing\"", + (string) (len=36) "hypothesis>=3.56; extra == \"testing\"", + (string) (len=24) "mock; extra == \"testing\"", + (string) (len=24) "nose; extra == \"testing\"", + (string) (len=35) "pygments>=2.7.2; extra == \"testing\"", + (string) (len=28) "requests; extra == \"testing\"", + (string) (len=30) "setuptools; extra == \"testing\"", + (string) (len=29) "xmlschema; extra == \"testing\"" }, (string) (len=15) "requires_python": ([]string) (len=1) { (string) (len=5) ">=3.7" diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8b00406 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,82 @@ +FROM ubuntu:noble +ARG DEBIAN_FRONTEND=noninteractive +ARG OS_IDENTIFIER=ubuntu-2404 + +# Install necessary packages +RUN apt-get update -qq && apt-get install -y --no-install-recommends \ + build-essential \ + ca-certificates \ + curl \ + gnupg \ + gnupg1 \ + git && \ + apt-get clean && rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* + +ENV PYTHON_VERSION="3.12.4" +ENV PATH=/opt/python/"${PYTHON_VERSION}"/bin:$PATH +RUN ARCH=$(dpkg --print-architecture) && \ + case $ARCH in \ + amd64) \ + curl -O https://cdn.rstudio.com/python/ubuntu-2404/pkgs/python-${PYTHON_VERSION}_1_amd64.deb && \ + apt-get update -qq && \ + apt-get install -f -y ./python-${PYTHON_VERSION}_1_amd64.deb && \ + rm python-${PYTHON_VERSION}_1_amd64.deb && \ + ln -s /opt/python/${PYTHON_VERSION}/bin/pip /usr/local/bin/pip \ + ;; \ + arm64) \ + apt-get update -qq && \ + apt-get install -y python3 \ + python3-software-properties \ + python3-unittest2 \ + python3-build \ + python3-virtualenv \ + python3-venv && rm -rf /usr/lib/python3.12/EXTERNALLY-MANAGED && \ + # Install `pip` ignoring PEP 668 + curl -sS https://bootstrap.pypa.io/get-pip.py -o get-pip.py && \ + python3 get-pip.py && \ + rm get-pip.py \ + ;; \ + *) echo "unsupported architecture" >&2; exit 1 ;; \ + esac && \ + apt-get clean && rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* + +# Install Python dependencies +RUN pip install --upgrade pip && \ + pip install \ + pipenv==v2024.0.1 \ + build \ + virtualenv \ + wheel \ + twine && \ + ln -s /opt/python/${PYTHON_VERSION}/bin/twine /usr/local/bin/twine || echo 'twine symlink failed' + +# Install Go with checksum verification and dependencies +ARG GOBIN=/usr/local/bin +ENV PATH="$PATH:/usr/bin:/usr/local/go/bin" \ + GOLANG_VERSION=1.23.2 \ + GOLANG_SHA256_X86=542d3c1705f1c6a1c5a80d5dc62e2e45171af291e755d591c5e6531ef63b454e \ + GOLANG_SHA256_ARM=f626cdd92fc21a88b31c1251f419c17782933a42903db87a174ce74eeecc66a9 + +RUN ARCH=$(dpkg --print-architecture); \ + case "$ARCH" in \ + amd64) GOLANG_ARCH="amd64"; SHA256="$GOLANG_SHA256_X86" ;; \ + arm64) GOLANG_ARCH="arm64"; SHA256="$GOLANG_SHA256_ARM" ;; \ + *) echo >&2 "unsupported architecture: $ARCH"; exit 1 ;; \ + esac; \ + curl -fsSL "https://dl.google.com/go/go${GOLANG_VERSION}.linux-${GOLANG_ARCH}.tar.gz" -o golang.tar.gz; \ + echo "${SHA256} *golang.tar.gz" | sha256sum -c -; \ + tar -C /usr/local -xzf golang.tar.gz; \ + rm golang.tar.gz && \ + go install gotest.tools/gotestsum@latest && \ + go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.60.1 && \ + go clean -cache + + +# Install Rust +RUN curl https://sh.rustup.rs -sSf | \ + sh -s -- --default-toolchain stable -y + + +RUN mkdir /python-distribution-parser +# Start in `/python-distribution-parser` which should be mounted in +WORKDIR /python-distribution-parser diff --git a/README.md b/README.md index 7397640..d4edd55 100644 --- a/README.md +++ b/README.md @@ -132,3 +132,18 @@ To update snapshots with [cupaloy](https://github.com/bradleyjkemp/cupaloy): ```bash UPDATE_SNAPSHOTS=true go test ./... ``` + +## Running unit tests with Docker + + + +```bash +$ docker build -t python-distr-parser-dev . + +$ docker run -it -v $(pwd):/python-distribution-parser python-distr-parser-dev /bin/bash + +# generate GPG key +$ gpg --gen-key + +$ go test -count=1 -timeout=5m . +```