Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 17 additions & 9 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ jobs:
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "setup.py" }}
- v2-dependencies-{{ checksum "setup.py" }}-{{ checksum "pyproject.toml" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- v2-dependencies-

# install dependencies
- run:
Expand All @@ -46,7 +46,7 @@ jobs:
python3 -m venv .venv
. .venv/bin/activate
pip install --upgrade pip
pip install .[ui,test,publish]
pip install '.[ui,test,publish]'

# run tests!
- run:
Expand All @@ -55,12 +55,19 @@ jobs:
. .venv/bin/activate
tox -e py314

- run:
name: Validate distribution packages
command: |
. .venv/bin/activate
python -m build
python -m twine check --strict dist/*

- save_cache:
paths:
- ./.venv
- ./.tox
- .coverage
key: v1-dependencies-{{ checksum "setup.py" }}
key: v2-dependencies-{{ checksum "setup.py" }}-{{ checksum "pyproject.toml" }}

# - run:
# name: Generate reports
Expand All @@ -83,9 +90,9 @@ jobs:
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "setup.py" }}
- v2-dependencies-{{ checksum "setup.py" }}-{{ checksum "pyproject.toml" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- v2-dependencies-

# install dependencies
- run:
Expand All @@ -94,13 +101,14 @@ jobs:
python3 -m venv .venv
. .venv/bin/activate
pip install --upgrade pip
pip install .[test,publish]
pip install '.[publish]'

- run:
name: Build packages
command: |
. .venv/bin/activate
python setup.py sdist
python -m build
python -m twine check --strict dist/*

- run:
name: Initialise .pypirc
Expand All @@ -114,4 +122,4 @@ jobs:
name: Upload package
command: |
. .venv/bin/activate
twine upload dist/*
python -m twine upload dist/*
26 changes: 25 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,27 @@
# PyQtToolkit

A toolkit for PyQt
A toolkit for PyQt

## Development and packaging

Use Python 3.14 or newer. Install the optional Qt bindings when developing UI
features; installing the base package does not install PyQt5.

```sh
python -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install '.[ui,test,publish]'
python -m tox -e py314
python -m build
python -m twine check --strict dist/*
```

The isolated build backend uses setuptools and the bundled Versioneer code to
produce a wheel and source distribution. Build from a Git checkout or an unpacked
source distribution so the release version can be determined. The `publish` extra
provides the build and upload tools; it is not needed by library consumers.

The tox environment runs the full Qt test suite offscreen, including the task-runner
tests, and checks package license headers. See [the validation report](docs/dependency-validation.md)
for tested dependency versions, platform limits and source-review boundaries.
83 changes: 83 additions & 0 deletions docs/dependency-baseline.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Resolved Python 3.14.6 environment, 2026-10-19; includes validation tools.
appdirs==1.4.4
boolean.py==5.0
build==1.6.1
CacheControl==0.14.4
cachetools==7.2.3
certifi==2026.10.18
cffi==2.1.1
charset-normalizer==3.5.2
colorama==0.4.6
contourpy==1.4.0
coverage==7.16.2
cryptography==50.0.2
cycler==0.12.1
cyclonedx-python-lib==11.12.0
defusedxml==0.7.1
distlib==0.4.4
docutils==0.23
filelock==4.2.4
fonttools==4.67.0
id==1.6.1
idna==3.20
iniconfig==2.3.1
jaraco.classes==3.4.0
jaraco.context==6.1.2
jaraco.functools==4.6.0
jeepney==0.9.0
Jinja2==3.1.6
keyring==25.7.0
kiwisolver==1.5.1
license-expression==30.4.4
markdown-it-py==4.2.0
MarkupSafe==3.0.4
matplotlib==3.11.2
mdurl==0.1.2
more-itertools==11.2.1
msgpack==1.2.3
nh3==0.3.7
numpy==2.5.4
packageurl-python==0.17.6
packaging==26.3
pandas==3.0.6
pillow==13.0.0
pip==26.2.1
pip-requirements-parser==32.0.1
pip_api==0.0.35
pip_audit==2.10.1
platformdirs==4.13.5
pluggy==1.7.0
py-serializable==2.1.0
pycparser==3.11
Pygments==2.21.0
pyparsing==3.3.3
pyproject-api==1.12.0
pyproject_hooks==1.3.3
PyQt5==5.15.11
PyQt5-Qt5==5.15.19
PyQt5_sip==12.20.0
pyqttoolkit==0.9.0+3.g4d4f4e5
pytest==9.1.1
pytest-asyncio==1.4.0
pytest-cov==7.1.0
pytest-qt==4.5.0
pytest-xvfb==3.1.1
python-dateutil==2.9.0.post0
python-discovery==1.6.4
PyVirtualDisplay==3.0
readme_renderer==46.0
requests==2.34.2
requests-toolbelt==1.0.0
rfc3986==2.0.0
rich==15.0.0
SecretStorage==3.5.0
setuptools==84.0.0
six==1.17.0
sortedcontainers==2.4.0
tomli==2.5.0
tomli_w==1.2.0
tox==4.67.1
twine==7.0.0
typing_extensions==4.16.0
urllib3==2.8.0
virtualenv==21.14.11
82 changes: 82 additions & 0 deletions docs/dependency-candidate.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# Resolved Python 3.14.6 environment, 2026-10-19; includes validation tools.
appdirs==1.4.4
boolean.py==5.0
build==1.6.1
CacheControl==0.14.4
cachetools==7.2.3
certifi==2026.10.18
cffi==2.1.1
charset-normalizer==3.5.2
colorama==0.4.6
contourpy==1.4.0
coverage==7.16.2
cryptography==50.0.2
cycler==0.12.1
cyclonedx-python-lib==11.12.0
defusedxml==0.7.1
distlib==0.4.4
docutils==0.23
filelock==4.2.4
fonttools==4.67.0
id==1.6.1
idna==3.20
iniconfig==2.3.1
jaraco.classes==3.4.0
jaraco.context==6.1.2
jaraco.functools==4.6.0
jeepney==0.9.0
Jinja2==3.1.6
keyring==25.7.0
kiwisolver==1.5.1
license-expression==30.4.4
markdown-it-py==4.2.0
MarkupSafe==3.0.4
matplotlib==3.11.2
mdurl==0.1.2
more-itertools==11.2.1
msgpack==1.2.3
nh3==0.3.7
numpy==2.5.4
packageurl-python==0.17.6
packaging==26.3
pandas==3.0.6
pillow==13.0.0
pip==26.2.1
pip-requirements-parser==32.0.1
pip_api==0.0.35
pip_audit==2.10.1
platformdirs==4.13.5
pluggy==1.7.0
py-serializable==2.1.0
pycparser==3.11
Pygments==2.21.0
pyparsing==3.3.3
pyproject-api==1.12.0
pyproject_hooks==1.3.3
PyQt5==5.15.11
PyQt5-Qt5==5.15.19
PyQt5_sip==12.20.0
pyqttoolkit==0.9.0+3.g4d4f4e5.dirty
pytest==9.1.1
pytest-asyncio==1.4.0
pytest-cov==7.1.0
pytest-qt==4.5.0
pytest-xvfb==3.1.1
python-dateutil==2.9.0.post0
python-discovery==1.6.4
PyVirtualDisplay==3.0
readme_renderer==46.0
requests==2.34.2
requests-toolbelt==1.0.0
rfc3986==2.0.0
rich==15.0.0
SecretStorage==3.5.0
six==1.17.0
sortedcontainers==2.4.0
tomli==2.5.0
tomli_w==1.2.0
tox==4.67.1
twine==7.0.0
typing_extensions==4.16.0
urllib3==2.8.0
virtualenv==21.14.11
Loading
Loading