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

Drop support for Python 3.8 #58

Merged
merged 3 commits into from
Jan 21, 2025
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
6 changes: 3 additions & 3 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:

- uses: westerveltco/setup-ci-action@v0
with:
python-version: 3.8
python-version: 3.9
extra-python-dependencies: nox
use-uv: true

Expand Down Expand Up @@ -78,7 +78,7 @@ jobs:

- uses: westerveltco/setup-ci-action@v0
with:
python-version: 3.8
python-version: 3.9
extra-python-dependencies: nox
use-uv: true

Expand All @@ -97,7 +97,7 @@ jobs:

- uses: westerveltco/setup-ci-action@v0
with:
python-version: 3.8
python-version: 3.9
extra-python-dependencies: nox
use-uv: true

Expand Down
46 changes: 25 additions & 21 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,43 +18,47 @@ and this project attempts to adhere to [Semantic Versioning](https://semver.org/

## [Unreleased]

### Removed

- Dropped support for Python 3.8.

## [0.1.1]

### Changed

- Changed exception raised if `op` CLI not found to `RuntimeError`.
- Changed exception raised if `op` CLI not found to `RuntimeError`.

### Fixed

- Removed the passing in of just the `OP_SERVICE_ACCOUNT_TOKEN` variable to the `subprocess.run` call to `op`. This was clobbering the environment and causing configuration issues with the `op` CLI. First reported in [#12](https://github.com/westerveltco/django-opfield/issues/12) by [@joshuadavidthomas](https://github.com/joshuadavidthomas).
- Removed the passing in of just the `OP_SERVICE_ACCOUNT_TOKEN` variable to the `subprocess.run` call to `op`. This was clobbering the environment and causing configuration issues with the `op` CLI. First reported in [#12](https://github.com/westerveltco/django-opfield/issues/12) by [@joshuadavidthomas](https://github.com/joshuadavidthomas).

### New Contributors!
### New Contributors

- Jeff Triplett [@jefftriplett](https://github.com/jefftriplett) in [#13](https://github.com/westerveltco/django-opfield/pull/13)
- Jeff Triplett [@jefftriplett](https://github.com/jefftriplett) in [#13](https://github.com/westerveltco/django-opfield/pull/13)

## [0.1.0]

Initial release! 🎉

### Added

- A custom model field `OPField` for storing references to items in a 1Password vault.
- Store a reference to an item in the vault using the `op://` secret reference URI.
- Access the secret stored via a `<field_name>_secret` attribute on the model.
- Restrict which vaults can be used in the field to a list of vault names, passed in the `vaults` argument to the field.
- Explicitly set the name of the secret field in the model, via the `secret_name` argument to the field.
- A custom `OPURIValidator` class for validating 1Password URIs passed to the field.
- Initial application configuration options:
- `OP_COMMAND_TIMEOUT`: for setting the timeout for `op` commands, defaults to 5 seconds.
- `OP_CLI_PATH`: for setting the path to the `op` executable, defaults to using `shutil.which('op')`. If `op` is not found, an exception will be raised.
- `OP_SERVICE_ACCOUNT_TOKEN`: for setting the 1Password service account token, defaults to using the value of the `OP_SERVICE_ACCOUNT_TOKEN` environment variable. If not set, an exception will be raised.
- Initial documentation.
- Initial tests.
- Initial CI/CD.

### New Contributors!

- Josh Thomas <[email protected]> (maintainer)
- A custom model field `OPField` for storing references to items in a 1Password vault.
- Store a reference to an item in the vault using the `op://` secret reference URI.
- Access the secret stored via a `<field_name>_secret` attribute on the model.
- Restrict which vaults can be used in the field to a list of vault names, passed in the `vaults` argument to the field.
- Explicitly set the name of the secret field in the model, via the `secret_name` argument to the field.
- A custom `OPURIValidator` class for validating 1Password URIs passed to the field.
- Initial application configuration options:
- `OP_COMMAND_TIMEOUT`: for setting the timeout for `op` commands, defaults to 5 seconds.
- `OP_CLI_PATH`: for setting the path to the `op` executable, defaults to using `shutil.which('op')`. If `op` is not found, an exception will be raised.
- `OP_SERVICE_ACCOUNT_TOKEN`: for setting the 1Password service account token, defaults to using the value of the `OP_SERVICE_ACCOUNT_TOKEN` environment variable. If not set, an exception will be raised.
- Initial documentation.
- Initial tests.
- Initial CI/CD.

### New Contributors

- Josh Thomas <[email protected]> (maintainer)

[unreleased]: https://github.com/westerveltco/django-opfield/compare/v0.1.1...HEAD
[0.1.0]: https://github.com/westerveltco/django-opfield/releases/tag/v0.1.0
Expand Down
3 changes: 1 addition & 2 deletions noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,11 @@
nox.options.default_venv_backend = "uv|virtualenv"
nox.options.reuse_existing_virtualenvs = True

PY38 = "3.8"
PY39 = "3.9"
PY310 = "3.10"
PY311 = "3.11"
PY312 = "3.12"
PY_VERSIONS = [PY38, PY39, PY310, PY311, PY312]
PY_VERSIONS = [PY39, PY310, PY311, PY312]
PY_DEFAULT = PY_VERSIONS[0]
PY_LATEST = PY_VERSIONS[-1]

Expand Down
3 changes: 1 addition & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ classifiers = [
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
Expand All @@ -28,7 +27,7 @@ keywords = []
license = {file = "LICENSE"}
name = "django-opfield"
readme = "README.md"
requires-python = ">=3.8"
requires-python = ">=3.9"

[project.optional-dependencies]
dev = [
Expand Down
Loading