Merge branch 'feature/7' into dev

ID: 7
Type: feature
Title: setup advanced testing environment
Status: done
Priority: high
Created: 2025-06-20
Description: copy the testing environment setup from
             byteb4rb1e.sphinxcontrib.ext
This commit is contained in:
Tiara Rodney 2025-06-20 20:21:30 +02:00
commit dfc28e2240
No known key found for this signature in database
GPG key ID: 5F43FAB4FBE5B5EB
10 changed files with 104 additions and 135 deletions

1
.gitignore vendored
View file

@ -11,3 +11,4 @@
/configure~ /configure~
*.swo *.swo
*.swp *.swp
/test-reports/

View file

@ -16,8 +16,13 @@ configure: configure.ac
.venv/bin/python3 -m pip install --upgrade pip .venv/bin/python3 -m pip install --upgrade pip
.venv/bin/pip install -r requirements-dev.txt .venv/bin/pip install -r requirements-dev.txt
test-reports: test-reports: test-reports/unit test-reports/static
.venv/bin/python3 -m unittest discover -v
test-reports/unit:
python3 -m pipenv run -v test-unit
test-reports/static:
python3 -m pipenv run -v test-static
build: .venv/bin/pipenv build: .venv/bin/pipenv
.venv/bin/pipenv run build .venv/bin/pipenv run build

View file

@ -4,17 +4,16 @@ verify_ssl = true
name = "pypi" name = "pypi"
[dev-packages] [dev-packages]
mypy = "~=1.15.0"
autopep8 = "~=2.3.2"
setuptools-scm = "~=8.2.0" setuptools-scm = "~=8.2.0"
pylint = "~=3.3.6"
build = "*" build = "*"
pipenv = "*" pipenv = "*"
byteb4rb1e-utils = { editable = true, path = '.'} byteb4rb1e-utils = { editable = true, path = '.'}
tox = "*"
[requires] [requires]
python_version = "3.11" python_version = "3.11"
[scripts] [scripts]
"build" = "python3 -m build" "build" = "python3 -m build"
"test-static" = "tox run -m static"
"test-unit" = "tox run -m unit"

176
Pipfile.lock generated
View file

@ -1,7 +1,7 @@
{ {
"_meta": { "_meta": {
"hash": { "hash": {
"sha256": "4847baa5a13a96f2c3de2a246a0c088806c308426c79d8105387dff1fe1f1e58" "sha256": "cb7c8c0a12f574d2bc30ffe38e79ba18ee29424cb1fb1cdce8373f89d56f3e1c"
}, },
"pipfile-spec": 6, "pipfile-spec": 6,
"requires": { "requires": {
@ -17,23 +17,6 @@
}, },
"default": {}, "default": {},
"develop": { "develop": {
"astroid": {
"hashes": [
"sha256:622cc8e3048684aa42c820d9d218978021c3c3d174fb03a9f0d615921744f550",
"sha256:d05bfd0acba96a7bd43e222828b7d9bc1e138aaeb0649707908d3702a9831248"
],
"markers": "python_full_version >= '3.9.0'",
"version": "==3.3.9"
},
"autopep8": {
"hashes": [
"sha256:89440a4f969197b69a995e4ce0661b031f455a9f776d2c5ba3dbd83466931758",
"sha256:ce8ad498672c845a0c3de2629c15b635ec2b05ef8177a6e7c91c74f3e9b51128"
],
"index": "pypi",
"markers": "python_version >= '3.9'",
"version": "==2.3.2"
},
"build": { "build": {
"hashes": [ "hashes": [
"sha256:1d61c0887fa860c01971625baae8bdd338e517b836a2f70dd1f7aa3a6b2fc5b5", "sha256:1d61c0887fa860c01971625baae8bdd338e517b836a2f70dd1f7aa3a6b2fc5b5",
@ -47,13 +30,29 @@
"editable": true, "editable": true,
"path": "." "path": "."
}, },
"cachetools": {
"hashes": [
"sha256:1c7bb3cf9193deaf3508b7c5f2a79986c13ea38965c5adcff1f84519cf39163e",
"sha256:b4c4f404392848db3ce7aac34950d17be4d864da4b8b66911008e430bc544587"
],
"markers": "python_version >= '3.9'",
"version": "==6.1.0"
},
"certifi": { "certifi": {
"hashes": [ "hashes": [
"sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", "sha256:2e0c7ce7cb5d8f8634ca55d2ba7e6ec2689a2fd6537d8dec1296a477a4910057",
"sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3" "sha256:d747aa5a8b9bbbb1bb8c22bb13e22bd1f18e9796defa16bab421f7f7a317323b"
], ],
"markers": "python_version >= '3.6'", "markers": "python_version >= '3.7'",
"version": "==2025.4.26" "version": "==2025.6.15"
},
"chardet": {
"hashes": [
"sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7",
"sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970"
],
"markers": "python_version >= '3.7'",
"version": "==5.2.0"
}, },
"colorama": { "colorama": {
"hashes": [ "hashes": [
@ -63,14 +62,6 @@
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'", "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'",
"version": "==0.4.6" "version": "==0.4.6"
}, },
"dill": {
"hashes": [
"sha256:0633f1d2df477324f53a895b02c901fb961bdbf65a17122586ea7019292cbcf0",
"sha256:44f54bf6412c2c8464c14e8243eb163690a9800dbe2c367330883b19c7561049"
],
"markers": "python_version >= '3.8'",
"version": "==0.4.0"
},
"distlib": { "distlib": {
"hashes": [ "hashes": [
"sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87",
@ -86,69 +77,6 @@
"markers": "python_version >= '3.9'", "markers": "python_version >= '3.9'",
"version": "==3.18.0" "version": "==3.18.0"
}, },
"isort": {
"hashes": [
"sha256:1cb5df28dfbc742e490c5e41bad6da41b805b0a8be7bc93cd0fb2a8a890ac450",
"sha256:2dc5d7f65c9678d94c88dfc29161a320eec67328bc97aad576874cb4be1e9615"
],
"markers": "python_full_version >= '3.9.0'",
"version": "==6.0.1"
},
"mccabe": {
"hashes": [
"sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325",
"sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"
],
"markers": "python_version >= '3.6'",
"version": "==0.7.0"
},
"mypy": {
"hashes": [
"sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e",
"sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22",
"sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f",
"sha256:1fbb8da62dc352133d7d7ca90ed2fb0e9d42bb1a32724c287d3c76c58cbaa9c2",
"sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f",
"sha256:2e2c2e6d3593f6451b18588848e66260ff62ccca522dd231cd4dd59b0160668b",
"sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5",
"sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f",
"sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43",
"sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e",
"sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c",
"sha256:6983aae8b2f653e098edb77f893f7b6aca69f6cffb19b2cc7443f23cce5f4828",
"sha256:712e962a6357634fef20412699a3655c610110e01cdaa6180acec7fc9f8513ba",
"sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee",
"sha256:811aeccadfb730024c5d3e326b2fbe9249bb7413553f15499a4050f7c30e801d",
"sha256:8f8722560a14cde92fdb1e31597760dc35f9f5524cce17836c0d22841830fd5b",
"sha256:93faf3fdb04768d44bf28693293f3904bbb555d076b781ad2530214ee53e3445",
"sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e",
"sha256:979e4e1a006511dacf628e36fadfecbcc0160a8af6ca7dad2f5025529e082c13",
"sha256:98b7b9b9aedb65fe628c62a6dc57f6d5088ef2dfca37903a7d9ee374d03acca5",
"sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd",
"sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf",
"sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357",
"sha256:be68172e9fd9ad8fb876c6389f16d1c1b5f100ffa779f77b1fb2176fcc9ab95b",
"sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036",
"sha256:c4bb0e1bd29f7d34efcccd71cf733580191e9a264a2202b0239da95984c5b559",
"sha256:c7be1e46525adfa0d97681432ee9fcd61a3964c2446795714699a998d193f1a3",
"sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f",
"sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464",
"sha256:d10d994b41fb3497719bbf866f227b3489048ea4bbbb5015357db306249f7980",
"sha256:e601a7fa172c2131bff456bb3ee08a88360760d0d2f8cbd7a75a65497e2df078",
"sha256:f95579473af29ab73a10bada2f9722856792a36ec5af5399b653aa28360290a5"
],
"index": "pypi",
"markers": "python_version >= '3.9'",
"version": "==1.15.0"
},
"mypy-extensions": {
"hashes": [
"sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505",
"sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"
],
"markers": "python_version >= '3.8'",
"version": "==1.1.0"
},
"packaging": { "packaging": {
"hashes": [ "hashes": [
"sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484",
@ -159,37 +87,36 @@
}, },
"pipenv": { "pipenv": {
"hashes": [ "hashes": [
"sha256:85d42e13da78f27f0213c998dba9a59f3ba6a6fe9e420b75b561acc344f021ad", "sha256:87370bedcf0ff66d226af07ca341ae94afcc08fed90d57ad9fea9ffd44ced4d3",
"sha256:f26dc0352f3fb167c3897a66a5d8c9ab81dd52a836a48630712e1e5a06840ebf" "sha256:f0a67aa928824e61003d52acea72a94b180800019f03d38a311966f6330bc8d1"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.9'", "markers": "python_version >= '3.9'",
"version": "==2025.0.2" "version": "==2025.0.3"
}, },
"platformdirs": { "platformdirs": {
"hashes": [ "hashes": [
"sha256:a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94", "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc",
"sha256:eb437d586b6a0986388f0d6f74aa0cde27b48d0e3d66843640bfb6bdcdb6e351" "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4"
], ],
"markers": "python_version >= '3.9'", "markers": "python_version >= '3.9'",
"version": "==4.3.7" "version": "==4.3.8"
}, },
"pycodestyle": { "pluggy": {
"hashes": [ "hashes": [
"sha256:35863c5974a271c7a726ed228a14a4f6daf49df369d8c50cd9a6f58a5e143ba9", "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3",
"sha256:c8415bf09abe81d9c7f872502a6eee881fbe85d8763dd5b9924bb0a01d67efae" "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"
], ],
"markers": "python_version >= '3.9'", "markers": "python_version >= '3.9'",
"version": "==2.13.0" "version": "==1.6.0"
}, },
"pylint": { "pyproject-api": {
"hashes": [ "hashes": [
"sha256:8b7c2d3e86ae3f94fb27703d521dd0b9b6b378775991f504d7c3a6275aa0a6a6", "sha256:43c9918f49daab37e302038fc1aed54a8c7a91a9fa935d00b9a485f37e0f5335",
"sha256:b634a041aac33706d56a0d217e6587228c66427e20ec21a019bc4cdee48c040a" "sha256:7d6238d92f8962773dd75b5f0c4a6a27cce092a14b623b811dba656f3b628948"
], ],
"index": "pypi", "markers": "python_version >= '3.9'",
"markers": "python_full_version >= '3.9.0'", "version": "==1.9.1"
"version": "==3.3.6"
}, },
"pyproject-hooks": { "pyproject-hooks": {
"hashes": [ "hashes": [
@ -201,11 +128,11 @@
}, },
"setuptools": { "setuptools": {
"hashes": [ "hashes": [
"sha256:a65cffc4fb86167e3020b3ef58e08226baad8b29a3b34ce2c9d07e901bac481d", "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922",
"sha256:ec8308eb180b2312062b1c5523204acf872cd8b0a9e6c2ae76431b22bc4065d7" "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c"
], ],
"markers": "python_version >= '3.9'", "markers": "python_version >= '3.9'",
"version": "==80.3.0" "version": "==80.9.0"
}, },
"setuptools-scm": { "setuptools-scm": {
"hashes": [ "hashes": [
@ -216,29 +143,22 @@
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.8'",
"version": "==8.2.0" "version": "==8.2.0"
}, },
"tomlkit": { "tox": {
"hashes": [ "hashes": [
"sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde", "sha256:2b8a7fb986b82aa2c830c0615082a490d134e0626dbc9189986da46a313c4f20",
"sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79" "sha256:b97d5ecc0c0d5755bcc5348387fef793e1bfa68eb33746412f4c60881d7f5f57"
], ],
"markers": "python_version >= '3.8'", "index": "pypi",
"version": "==0.13.2" "markers": "python_version >= '3.9'",
}, "version": "==4.27.0"
"typing-extensions": {
"hashes": [
"sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c",
"sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef"
],
"markers": "python_version >= '3.8'",
"version": "==4.13.2"
}, },
"virtualenv": { "virtualenv": {
"hashes": [ "hashes": [
"sha256:800863162bcaa5450a6e4d721049730e7f2dae07720e0902b0e4040bd6f9ada8", "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11",
"sha256:e34302959180fca3af42d1800df014b35019490b119eba981af27f2fa486e5d6" "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af"
], ],
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.8'",
"version": "==20.30.0" "version": "==20.31.2"
} }
} }
} }

2
TODO
View file

@ -124,7 +124,7 @@ Description: A handler that can be registered with an urllib.request
ID: 7 ID: 7
Type: feature Type: feature
Title: setup advanced testing environment Title: setup advanced testing environment
Status: in-progress Status: done
Priority: high Priority: high
Created: 2025-06-20 Created: 2025-06-20
Description: copy the testing environment setup from Description: copy the testing environment setup from

View file

44
tox.ini Normal file
View file

@ -0,0 +1,44 @@
[tox]
requires =
tox>=4.19
env_list =
py3{8-12}-{unit}
lint
format
[testenv]
deps =
.
[testenv:lint]
description = run type check on code base
labels = static
deps =
mypy
commands =
mypy src tests --junit-xml test-reports/{env_name}.xml
[testenv:audit]
description = run type check on code base
labels = audit
deps =
pip-audit
commands =
pip-audit .
[testenv:format]
description = run type check on code base
labels = static
deps =
black
commands =
black --check src tests
[testenv:py3{9-13}-unit]
description = run type check on code base
labels = unit
deps =
{[testenv]deps}
pytest
commands =
pytest tests/unit --junitxml=test-reports/{env_name}.xml