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]