feat!: bump minimum python version to 3.12+

- Update pyproject.toml to require Python 3.12 or higher
- Remove Python 3.10 and 3.11 from supported version classifiers
- Update Ruff target version to py312
- Add Python 3.12+ requirement to README installation section
- Document breaking change in CHANGELOG.md

BREAKING CHANGE: Minimum Python version updated from 3.10+ to 3.12+.
This enables use of modern Python 3.12+ generic syntax like
`class BaseMetadataField[T]:` without compatibility workarounds.
This commit is contained in:
Alexander Minges 2025-07-22 10:36:47 +02:00
parent beac9584cb
commit 142446c405
Signed by: Athemis
SSH key fingerprint: SHA256:TUXshgulbwL+FRYvBNo54pCsI0auROsSEgSvueKbkZ4
4 changed files with 14 additions and 6 deletions

View file

@ -23,8 +23,8 @@ words=WIP,TODO,FIXME
[title-match-regex]
# Title must match conventional commit format
# Supports optional scope and enforces lowercase types
regex=^(feat|fix|docs|style|refactor|test|chore|ci|build|perf|revert)(\([a-z0-9-]+\))?: [a-z].+
# Supports optional scope, breaking changes (!), and enforces lowercase types
regex=^(feat|fix|docs|style|refactor|test|chore|ci|build|perf|revert)(\([a-z0-9-]+\))?!?: [a-z].+
[body-max-line-length]
# Maximum line length in the body (commitlint standard)

View file

@ -18,6 +18,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- `DATAVERSE_AUTH_PASSWORD` - Basic authentication password
- Environment variables take precedence over configuration file values
- Backward compatibility maintained - config file values used when environment variables are not set
### Changed
- **BREAKING**: Minimum Python version requirement updated from 3.10+ to 3.12+
- This change allows the use of modern Python 3.12+ generic syntax (e.g., `class BaseMetadataField[T]:`)
- Users must upgrade to Python 3.12 or higher to use this version
- Automated tag-based release workflow with GitLab CI
- Release documentation in `docs/source/release-workflow.rst`
- Release process documentation in `CONTRIBUTING.md`

View file

@ -24,6 +24,10 @@
## Installation
### Requirements
- Python 3.12 or higher
Clone the repository from GitHub:
```bash

View file

@ -20,14 +20,12 @@ classifiers = [
"Topic :: Scientific/Engineering :: Information Analysis",
"Topic :: Software Development :: Libraries :: Python Modules",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Operating System :: OS Independent",
]
keywords = ["doi", "dataverse", "metadata", "research", "datasets"]
requires-python = ">=3.10"
requires-python = ">=3.12"
dependencies = [
"dnspython>=2.7.0,<3.0.0",
"requests>=2.32.3,<2.33.0",
@ -112,7 +110,7 @@ exclude_lines = [
[tool.ruff]
line-length = 88
target-version = "py310"
target-version = "py312"
extend-exclude = [".venv", "build", "dist", "docs", ".pytest_cache", "htmlcov"]
[tool.ruff.lint]