From 142446c40507f53506612f6c798d8cff60c6dfd1 Mon Sep 17 00:00:00 2001 From: Alexander Minges Date: Tue, 22 Jul 2025 10:36:47 +0200 Subject: [PATCH] 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. --- .gitlint | 4 ++-- CHANGELOG.md | 6 ++++++ README.md | 4 ++++ pyproject.toml | 6 ++---- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/.gitlint b/.gitlint index 5999a31..577b1c9 100644 --- a/.gitlint +++ b/.gitlint @@ -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) diff --git a/CHANGELOG.md b/CHANGELOG.md index d8a7e84..edc6a84 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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` diff --git a/README.md b/README.md index 089fc4e..1dde2ce 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,10 @@ ## Installation +### Requirements + +- Python 3.12 or higher + Clone the repository from GitHub: ```bash diff --git a/pyproject.toml b/pyproject.toml index 84bd858..af7c476 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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]