Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support Python 3.13, drop Python 3.8 support, support Postgres 17 #16

Merged
merged 6 commits into from
Nov 2, 2024
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
15 changes: 7 additions & 8 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ orbs:
python:
working_directory: /code
docker:
- image: opus10/circleci-python-library:2024-04-17
- image: opus10/circleci-python-library:2024-10-26
environment:
# Ensure makefile commands are not wrapped in "docker compose run"
EXEC_WRAPPER: ''
Expand All @@ -25,11 +25,11 @@ orbs:
steps:
- checkout
- restore_cache:
key: v4-{{ checksum "poetry.lock" }}
key: v5-{{ checksum "poetry.lock" }}
- run: make dependencies
- run: make full-test-suite
- save_cache:
key: v4-{{ checksum "poetry.lock" }}
key: v5-{{ checksum "poetry.lock" }}
paths:
- /home/circleci/.cache/pypoetry/
- /code/.venv
Expand All @@ -46,7 +46,7 @@ jobs:
test_pg_max:
executor:
name: opus10/python
pg_version: "16.4"
pg_version: "17.0"
steps:
- opus10/test

Expand All @@ -55,7 +55,7 @@ jobs:
steps:
- checkout
- restore_cache:
key: v4-{{ checksum "poetry.lock" }}
key: v5-{{ checksum "poetry.lock" }}
- run: make dependencies
- run: make lint

Expand All @@ -64,7 +64,7 @@ jobs:
steps:
- checkout
- restore_cache:
key: v4-{{ checksum "poetry.lock" }}
key: v5-{{ checksum "poetry.lock" }}
- run: make dependencies
- run: make type-check || true

Expand All @@ -73,9 +73,8 @@ jobs:
steps:
- checkout
- run: ssh-add -D
- run: echo "${GITHUB_DEVOPS_PRIVATE_SSH_KEY_BASE64}" | base64 --decode | ssh-add - > /dev/null
- restore_cache:
key: v4-{{ checksum "poetry.lock" }}
key: v5-{{ checksum "poetry.lock" }}
- run: make dependencies
- run: poetry run python devops.py deploy

Expand Down
3 changes: 2 additions & 1 deletion .readthedocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@ version: 2
build:
os: ubuntu-22.04
tools:
python: "3.8"
python: "3.9"
mkdocs:
configuration: mkdocs.yml
fail_on_warning: false
formats: all
python:
install:
- requirements: docs/requirements.txt
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

## 1.7.0 (2024-11-01)

#### Changes

- Added Python 3.13 support, dropped Python 3.8. Added Postgres17 support by [@wesleykendall](https://github.com/wesleykendall) in [#16](https://github.com/Opus10/django-pglock/pull/16).

## 1.6.2 (2024-09-13)

#### Fixes
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ Use `python manage.py pglock` to view and kill locks from the command line. It h

## Compatibility

`django-pglock` is compatible with Python 3.8 - 3.12, Django 4.2 - 5.1, Psycopg 2 - 3, and Postgres 13 - 16.
`django-pglock` is compatible with Python 3.9 - 3.13, Django 4.2 - 5.1, Psycopg 2 - 3, and Postgres 13 - 17.

## Documentation

Expand Down
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ Use `python manage.py pglock` to view and kill locks from the command line. It h

## Compatibility

`django-pglock` is compatible with Python 3.8 - 3.12, Django 4.2 - 5.1, Psycopg 2 - 3, and Postgres 13 - 16.
`django-pglock` is compatible with Python 3.9 - 3.13, Django 4.2 - 5.1, Psycopg 2 - 3, and Postgres 13 - 17.

## Next Steps

Expand Down
206 changes: 115 additions & 91 deletions docs/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,91 +1,115 @@
arrow==1.3.0 ; python_version >= "3.8" and python_version < "4"
asgiref==3.8.1 ; python_version >= "3.8" and python_version < "4"
astunparse==1.6.3 ; python_version >= "3.8" and python_version < "3.9"
babel==2.16.0 ; python_version >= "3.8" and python_version < "4"
backports-zoneinfo==0.2.1 ; python_version >= "3.8" and python_version < "3.9"
binaryornot==0.4.4 ; python_full_version >= "3.8.0" and python_version < "4"
black==24.8.0 ; python_version >= "3.8" and python_version < "4"
cachetools==5.5.0 ; python_version >= "3.8" and python_version < "4"
certifi==2024.7.4 ; python_version >= "3.8" and python_version < "4"
chardet==5.2.0 ; python_version >= "3.8" and python_version < "4"
charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4"
click==8.1.7 ; python_version >= "3.8" and python_version < "4"
colorama==0.4.6 ; python_version >= "3.8" and python_version < "4"
cookiecutter==1.7.3 ; python_full_version >= "3.8.0" and python_version < "4"
coverage[toml]==7.6.1 ; python_version >= "3.8" and python_version < "4"
distlib==0.3.8 ; python_version >= "3.8" and python_version < "4"
dj-database-url==2.2.0 ; python_full_version >= "3.8.0" and python_version < "4"
django-dynamic-fixture==4.0.1 ; python_full_version >= "3.8.0" and python_version < "4"
django-extensions==3.2.3 ; python_full_version >= "3.8.0" and python_version < "4"
django-pgactivity==1.4.1 ; python_full_version >= "3.8.0" and python_version < "4"
django-stubs-ext==5.0.4 ; python_version >= "3.8" and python_version < "4"
django-stubs==5.0.4 ; python_version >= "3.8" and python_version < "4"
django==4.2.15 ; python_version >= "3.8" and python_version < "4"
exceptiongroup==1.2.2 ; python_version >= "3.8" and python_version < "3.11"
filelock==3.15.4 ; python_version >= "3.8" and python_version < "4"
footing==0.1.4 ; python_full_version >= "3.8.0" and python_version < "4"
ghp-import==2.1.0 ; python_version >= "3.8" and python_version < "4"
griffe==1.2.0 ; python_version >= "3.8" and python_version < "4"
idna==3.8 ; python_version >= "3.8" and python_version < "4"
importlib-metadata==8.4.0 ; python_version >= "3.8" and python_version < "3.10"
iniconfig==2.0.0 ; python_version >= "3.8" and python_version < "4"
jinja2-time==0.2.0 ; python_full_version >= "3.8.0" and python_version < "4"
jinja2==3.1.4 ; python_version >= "3.8" and python_version < "4"
markdown==3.7 ; python_version >= "3.8" and python_version < "4"
markupsafe==2.1.5 ; python_version >= "3.8" and python_version < "4"
mergedeep==1.3.4 ; python_version >= "3.8" and python_version < "4"
mkdocs-autorefs==1.1.0 ; python_version >= "3.8" and python_version < "4"
mkdocs-get-deps==0.2.0 ; python_version >= "3.8" and python_version < "4"
mkdocs-material-extensions==1.3.1 ; python_version >= "3.8" and python_version < "4"
mkdocs-material==9.5.33 ; python_version >= "3.8" and python_version < "4"
mkdocs==1.6.0 ; python_version >= "3.8" and python_version < "4"
mkdocstrings-python==1.10.8 ; python_version >= "3.8" and python_version < "4"
mkdocstrings==0.25.2 ; python_version >= "3.8" and python_version < "4"
mypy-extensions==1.0.0 ; python_version >= "3.8" and python_version < "4"
nodeenv==1.9.1 ; python_full_version >= "3.8.0" and python_version < "4"
packaging==24.1 ; python_version >= "3.8" and python_version < "4"
paginate==0.5.6 ; python_version >= "3.8" and python_version < "4"
pathspec==0.12.1 ; python_version >= "3.8" and python_version < "4"
platformdirs==4.2.2 ; python_version >= "3.8" and python_version < "4"
pluggy==1.5.0 ; python_version >= "3.8" and python_version < "4"
poetry-core==1.9.0 ; python_version >= "3.8" and python_version < "4.0"
poyo==0.5.0 ; python_full_version >= "3.8.0" and python_version < "4"
psycopg2-binary==2.9.9 ; python_full_version >= "3.8.0" and python_version < "4"
pygments==2.18.0 ; python_version >= "3.8" and python_version < "4"
pymdown-extensions==10.9 ; python_version >= "3.8" and python_version < "4"
pyproject-api==1.7.1 ; python_version >= "3.8" and python_version < "4"
pyright==1.1.377 ; python_full_version >= "3.8.0" and python_version < "4"
pytest-cov==5.0.0 ; python_version >= "3.8" and python_version < "4"
pytest-django==4.8.0 ; python_version >= "3.8" and python_version < "4"
pytest-dotenv==0.5.2 ; python_full_version >= "3.8.0" and python_version < "4"
pytest-mock==3.14.0 ; python_version >= "3.8" and python_version < "4"
pytest-reraise==2.1.2 ; python_full_version >= "3.8.0" and python_version < "4"
pytest==8.3.2 ; python_version >= "3.8" and python_version < "4"
python-dateutil==2.9.0.post0 ; python_version >= "3.8" and python_version < "4"
python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4"
python-gitlab==4.9.0 ; python_full_version >= "3.8.0" and python_version < "4"
python-slugify==8.0.4 ; python_full_version >= "3.8.0" and python_version < "4"
pytz==2024.1 ; python_version >= "3.8" and python_version < "3.9"
pyyaml-env-tag==0.1 ; python_version >= "3.8" and python_version < "4"
pyyaml==6.0.2 ; python_version >= "3.8" and python_version < "4"
regex==2024.7.24 ; python_version >= "3.8" and python_version < "4"
requests-file==2.1.0 ; python_version >= "3.8" and python_version < "4"
requests-toolbelt==1.0.0 ; python_full_version >= "3.8.0" and python_version < "4"
requests==2.32.3 ; python_version >= "3.8" and python_version < "4"
ruff==0.6.2 ; python_full_version >= "3.8.0" and python_version < "4"
setuptools==73.0.1 ; python_version >= "3.8" and python_version < "4"
six==1.16.0 ; python_version >= "3.8" and python_version < "4"
sqlparse==0.5.1 ; python_version >= "3.8" and python_version < "4"
text-unidecode==1.3 ; python_full_version >= "3.8.0" and python_version < "4"
tldextract==5.1.2 ; python_version >= "3.8" and python_version < "4"
tomli==2.0.1 ; python_version >= "3.8" and python_full_version <= "3.11.0a6"
tox==4.18.0 ; python_version >= "3.8" and python_version < "4"
types-python-dateutil==2.9.0.20240821 ; python_version >= "3.8" and python_version < "4"
types-pyyaml==6.0.12.20240808 ; python_version >= "3.8" and python_version < "4"
typing-extensions==4.12.2 ; python_version >= "3.8" and python_version < "4"
tzdata==2024.1 ; python_version >= "3.8" and python_version < "4" and sys_platform == "win32"
urllib3==2.2.2 ; python_version >= "3.8" and python_version < "4"
virtualenv==20.26.3 ; python_version >= "3.8" and python_version < "4"
watchdog==4.0.2 ; python_version >= "3.8" and python_version < "4"
wheel==0.44.0 ; python_version >= "3.8" and python_version < "3.9"
zipp==3.20.0 ; python_version >= "3.8" and python_version < "3.10"
arrow==1.3.0 ; python_full_version >= "3.9.0" and python_version < "4"
asgiref==3.8.1 ; python_full_version >= "3.9.0" and python_version < "4"
babel==2.16.0 ; python_full_version >= "3.9.0" and python_version < "4"
binaryornot==0.4.4 ; python_full_version >= "3.9.0" and python_version < "4"
black==24.10.0 ; python_version >= "3.9" and python_version < "4"
build==1.2.2.post1 ; python_full_version >= "3.9.0" and python_version < "4.0"
cachecontrol[filecache]==0.14.0 ; python_full_version >= "3.9.0" and python_version < "4.0"
cachetools==5.5.0 ; python_full_version >= "3.9.0" and python_version < "4"
certifi==2024.7.4 ; python_full_version >= "3.9.0" and python_version < "4"
cffi==1.17.1 ; python_full_version >= "3.9.0" and python_version < "4.0" and (sys_platform == "darwin" or sys_platform == "linux") and (sys_platform == "darwin" or platform_python_implementation != "PyPy")
chardet==5.2.0 ; python_full_version >= "3.9.0" and python_version < "4"
charset-normalizer==3.3.2 ; python_full_version >= "3.9.0" and python_version < "4"
cleo==2.1.0 ; python_full_version >= "3.9.0" and python_version < "4.0"
click==8.1.7 ; python_version >= "3.9" and python_version < "4"
colorama==0.4.6 ; python_version >= "3.9" and python_version < "4"
cookiecutter==1.7.3 ; python_full_version >= "3.9.0" and python_version < "4"
coverage[toml]==7.6.1 ; python_full_version >= "3.9.0" and python_version < "4"
crashtest==0.4.1 ; python_full_version >= "3.9.0" and python_version < "4.0"
cryptography==43.0.3 ; python_full_version >= "3.9.0" and python_version < "4.0" and sys_platform == "linux"
distlib==0.3.8 ; python_full_version >= "3.9.0" and python_version < "4"
dj-database-url==2.3.0 ; python_full_version >= "3.9.0" and python_version < "4"
django-dynamic-fixture==4.0.1 ; python_full_version >= "3.9.0" and python_version < "4"
django-extensions==3.2.3 ; python_full_version >= "3.9.0" and python_version < "4"
django-pgactivity==1.4.1 ; python_full_version >= "3.9.0" and python_version < "4"
django-stubs-ext==5.1.1 ; python_full_version >= "3.9.0" and python_version < "4"
django-stubs==5.1.1 ; python_full_version >= "3.9.0" and python_version < "4"
django==4.2.15 ; python_full_version >= "3.9.0" and python_version < "4"
dulwich==0.21.7 ; python_full_version >= "3.9.0" and python_version < "4.0"
exceptiongroup==1.2.2 ; python_full_version >= "3.9.0" and python_version < "3.11"
fastjsonschema==2.20.0 ; python_full_version >= "3.9.0" and python_version < "4.0"
filelock==3.16.1 ; python_full_version >= "3.9.0" and python_version < "4"
footing==0.1.4 ; python_full_version >= "3.9.0" and python_version < "4"
ghp-import==2.1.0 ; python_version >= "3.9" and python_version < "4"
griffe==1.2.0 ; python_version >= "3.9" and python_version < "4"
idna==3.8 ; python_full_version >= "3.9.0" and python_version < "4"
importlib-metadata==8.4.0 ; python_version >= "3.9" and python_version < "3.12"
iniconfig==2.0.0 ; python_full_version >= "3.9.0" and python_version < "4"
installer==0.7.0 ; python_full_version >= "3.9.0" and python_version < "4.0"
jaraco-classes==3.4.0 ; python_full_version >= "3.9.0" and python_version < "4.0"
jeepney==0.8.0 ; python_full_version >= "3.9.0" and python_version < "4.0" and sys_platform == "linux"
jinja2-time==0.2.0 ; python_full_version >= "3.9.0" and python_version < "4"
jinja2==3.1.4 ; python_version >= "3.9" and python_version < "4"
keyring==24.3.1 ; python_full_version >= "3.9.0" and python_version < "4.0"
markdown==3.7 ; python_version >= "3.9" and python_version < "4"
markupsafe==2.1.5 ; python_version >= "3.9" and python_version < "4"
mergedeep==1.3.4 ; python_version >= "3.9" and python_version < "4"
mkdocs-autorefs==1.2.0 ; python_version >= "3.9" and python_version < "4"
mkdocs-get-deps==0.2.0 ; python_version >= "3.9" and python_version < "4"
mkdocs-material-extensions==1.3.1 ; python_full_version >= "3.9.0" and python_version < "4"
mkdocs-material==9.5.42 ; python_full_version >= "3.9.0" and python_version < "4"
mkdocs==1.6.1 ; python_version >= "3.9" and python_version < "4"
mkdocstrings-python==1.12.2 ; python_version >= "3.9" and python_version < "4"
mkdocstrings==0.26.2 ; python_version >= "3.9" and python_version < "4"
more-itertools==10.5.0 ; python_full_version >= "3.9.0" and python_version < "4.0"
msgpack==1.1.0 ; python_full_version >= "3.9.0" and python_version < "4.0"
mypy-extensions==1.0.0 ; python_version >= "3.9" and python_version < "4"
nodeenv==1.9.1 ; python_full_version >= "3.9.0" and python_version < "4"
packaging==24.1 ; python_version >= "3.9" and python_version < "4"
paginate==0.5.6 ; python_full_version >= "3.9.0" and python_version < "4"
pathspec==0.12.1 ; python_version >= "3.9" and python_version < "4"
pexpect==4.9.0 ; python_full_version >= "3.9.0" and python_version < "4.0"
pkginfo==1.11.2 ; python_full_version >= "3.9.0" and python_version < "4.0"
platformdirs==4.3.6 ; python_version >= "3.9" and python_version < "4"
pluggy==1.5.0 ; python_full_version >= "3.9.0" and python_version < "4"
poetry-core==1.9.1 ; python_full_version >= "3.9.0" and python_version < "4.0"
poetry-plugin-export==1.8.0 ; python_full_version >= "3.9.0" and python_version < "4.0"
poetry==1.8.4 ; python_full_version >= "3.9.0" and python_version < "4.0"
poyo==0.5.0 ; python_full_version >= "3.9.0" and python_version < "4"
psycopg2-binary==2.9.10 ; python_full_version >= "3.9.0" and python_version < "4"
ptyprocess==0.7.0 ; python_full_version >= "3.9.0" and python_version < "4.0"
pycparser==2.22 ; python_full_version >= "3.9.0" and python_version < "4.0" and (sys_platform == "darwin" or sys_platform == "linux") and (sys_platform == "darwin" or platform_python_implementation != "PyPy")
pygments==2.18.0 ; python_full_version >= "3.9.0" and python_version < "4"
pymdown-extensions==10.9 ; python_version >= "3.9" and python_version < "4"
pyproject-api==1.8.0 ; python_full_version >= "3.9.0" and python_version < "4"
pyproject-hooks==1.2.0 ; python_full_version >= "3.9.0" and python_version < "4.0"
pyright==1.1.386 ; python_full_version >= "3.9.0" and python_version < "4"
pytest-cov==5.0.0 ; python_full_version >= "3.9.0" and python_version < "4"
pytest-django==4.9.0 ; python_full_version >= "3.9.0" and python_version < "4"
pytest-dotenv==0.5.2 ; python_full_version >= "3.9.0" and python_version < "4"
pytest-mock==3.14.0 ; python_full_version >= "3.9.0" and python_version < "4"
pytest-reraise==2.1.2 ; python_full_version >= "3.9.0" and python_version < "4"
pytest==8.3.3 ; python_full_version >= "3.9.0" and python_version < "4"
python-dateutil==2.9.0.post0 ; python_version >= "3.9" and python_version < "4"
python-dotenv==1.0.1 ; python_full_version >= "3.9.0" and python_version < "4"
python-gitlab==4.9.0 ; python_full_version >= "3.9.0" and python_version < "4"
python-slugify==8.0.4 ; python_full_version >= "3.9.0" and python_version < "4"
pywin32-ctypes==0.2.3 ; python_full_version >= "3.9.0" and python_version < "4.0" and sys_platform == "win32"
pyyaml-env-tag==0.1 ; python_version >= "3.9" and python_version < "4"
pyyaml==6.0.2 ; python_version >= "3.9" and python_version < "4"
rapidfuzz==3.10.1 ; python_version >= "3.9" and python_version < "4.0"
regex==2024.7.24 ; python_full_version >= "3.9.0" and python_version < "4"
requests-file==2.1.0 ; python_full_version >= "3.9.0" and python_version < "4"
requests-toolbelt==1.0.0 ; python_full_version >= "3.9.0" and python_version < "4"
requests==2.32.3 ; python_full_version >= "3.9.0" and python_version < "4"
ruff==0.7.1 ; python_full_version >= "3.9.0" and python_version < "4"
secretstorage==3.3.3 ; python_full_version >= "3.9.0" and python_version < "4.0" and sys_platform == "linux"
setuptools==73.0.1 ; python_full_version >= "3.9.0" and python_version < "4"
shellingham==1.5.4 ; python_full_version >= "3.9.0" and python_version < "4.0"
six==1.16.0 ; python_version >= "3.9" and python_version < "4"
sqlparse==0.5.1 ; python_full_version >= "3.9.0" and python_version < "4"
text-unidecode==1.3 ; python_full_version >= "3.9.0" and python_version < "4"
tldextract==5.1.2 ; python_full_version >= "3.9.0" and python_version < "4"
tomli==2.0.1 ; python_version >= "3.9" and python_full_version <= "3.11.0a6"
tomlkit==0.13.2 ; python_full_version >= "3.9.0" and python_version < "4.0"
tox==4.23.2 ; python_full_version >= "3.9.0" and python_version < "4"
trove-classifiers==2024.10.21.16 ; python_full_version >= "3.9.0" and python_version < "4.0"
types-python-dateutil==2.9.0.20240821 ; python_full_version >= "3.9.0" and python_version < "4"
types-pyyaml==6.0.12.20240808 ; python_full_version >= "3.9.0" and python_version < "4"
typing-extensions==4.12.2 ; python_version >= "3.9" and python_version < "4"
tzdata==2024.1 ; python_full_version >= "3.9.0" and python_version < "4" and sys_platform == "win32"
urllib3==2.2.2 ; python_full_version >= "3.9.0" and python_version < "4"
virtualenv==20.27.1 ; python_full_version >= "3.9.0" and python_version < "4"
watchdog==4.0.2 ; python_version >= "3.9" and python_version < "4"
xattr==1.1.0 ; python_full_version >= "3.9.0" and python_version < "4.0" and sys_platform == "darwin"
zipp==3.20.0 ; python_version >= "3.9" and python_version < "3.12"
8 changes: 4 additions & 4 deletions environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ name: django-pglock
channels:
- conda-forge
dependencies:
- python==3.12.0
- poetry==1.6.1
- pip==23.2.1
- postgresql==16.0
- python==3.13.0
- poetry==1.8.4
- pip==24.2
- postgresql==17.0
variables:
DATABASE_URL: "postgres://postgres@localhost:5432/pglock_local"
EXEC_WRAPPER: ""
2 changes: 1 addition & 1 deletion footing.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
_extensions:
- jinja2_time.TimeExtension
_template: git@github.com:Opus10/public-django-app-template.git
_version: 2794ea47b0220081dc869d01199ee490dda00762
_version: 072543e27d8b506a6628f7793798609c62d6a8ae
check_types_in_ci: 'False'
is_django: 'True'
module_name: pglock
Expand Down
3 changes: 3 additions & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,16 @@ markdown_extensions:
- name: mermaid
class: mermaid
format: !!python/name:pymdownx.superfences.fence_code_format
- toc:
permalink: true

theme:
custom_dir: docs/overrides
name: material
logo: static/logo.png
favicon: static/logo.png
features:
- content.code.copy
- navigation.footer
- navigation.path
- navigation.sections
Expand Down
Loading