diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index b6c608b9..5580729f 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -14,13 +14,13 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] os: [ubuntu-latest, windows-latest] include: - os: macos-latest python-version: '3.9' - os: macos-latest - python-version: '3.13' + python-version: '3.14' steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} @@ -34,7 +34,7 @@ jobs: - name: Run integration tests run: invoke integration - - if: matrix.os == 'ubuntu-latest' && matrix.python-version == 3.13 + - if: matrix.os == 'ubuntu-latest' && matrix.python-version == 3.14 name: Upload integration codecov report uses: codecov/codecov-action@v4 with: diff --git a/.github/workflows/minimum.yml b/.github/workflows/minimum.yml index 5076a573..d051c628 100644 --- a/.github/workflows/minimum.yml +++ b/.github/workflows/minimum.yml @@ -14,13 +14,13 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] os: [ubuntu-latest, windows-latest] include: - os: macos-latest python-version: '3.9' - os: macos-latest - python-version: '3.13' + python-version: '3.14' steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} diff --git a/.github/workflows/prepare_release.yml b/.github/workflows/prepare_release.yml index ad0c6deb..5eca375b 100644 --- a/.github/workflows/prepare_release.yml +++ b/.github/workflows/prepare_release.yml @@ -28,7 +28,7 @@ jobs: run: | python -m pip install --upgrade pip python -m pip install requests==2.31.0 - python -m pip install bandit==1.7.7 + python -m pip install bandit==1.9.2 python -m pip install packaging python -m pip install .[test] diff --git a/.github/workflows/readme.yml b/.github/workflows/readme.yml index 5239a459..b3690414 100644 --- a/.github/workflows/readme.yml +++ b/.github/workflows/readme.yml @@ -4,17 +4,17 @@ on: push: pull_request: types: [opened, reopened] - + concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true - + jobs: readme: runs-on: ${{ matrix.os }} strategy: matrix: - python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] os: [ubuntu-latest, macos-latest] # skip windows bc rundoc fails steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/unit.yml b/.github/workflows/unit.yml index 7745656b..1a0cced3 100644 --- a/.github/workflows/unit.yml +++ b/.github/workflows/unit.yml @@ -14,13 +14,13 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] os: [ubuntu-latest, windows-latest] include: - os: macos-latest python-version: '3.9' - os: macos-latest - python-version: '3.13' + python-version: '3.14' steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} @@ -36,7 +36,7 @@ jobs: - name: Run Unit tests run: invoke unit - - if: matrix.os == 'ubuntu-latest' && matrix.python-version == 3.13 + - if: matrix.os == 'ubuntu-latest' && matrix.python-version == 3.14 name: Upload unit codecov report uses: codecov/codecov-action@v4 with: diff --git a/INSTALL.md b/INSTALL.md index f168e143..038ad84f 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -3,7 +3,7 @@ ## Requirements **RDT** has been developed and tested on -[Python 3.9, 3.10, 3.11, 3.12, and 3.13](https://www.python.org/downloads/) +[Python 3.9, 3.10, 3.11, 3.12, 3.13 and 3.14](https://www.python.org/downloads/) Also, although it is not strictly required, the usage of a [virtualenv]( https://virtualenv.pypa.io/en/latest/) is highly recommended in order to avoid diff --git a/pyproject.toml b/pyproject.toml index 1a347e34..c60e37de 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,31 +13,36 @@ classifiers = [ 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', 'Programming Language :: Python :: 3.13', + 'Programming Language :: Python :: 3.14', 'Topic :: Scientific/Engineering :: Artificial Intelligence', ] keywords = ['machine learning', 'synthetic data generation', 'benchmark', 'generative models'] dynamic = ['version'] license = { text = 'BSL-1.1' } -requires-python = '>=3.9,<3.14' +requires-python = '>=3.9,<3.15' readme = 'README.md' dependencies = [ "numpy>=1.21.0;python_version<'3.10'", "numpy>=1.23.3;python_version>='3.10' and python_version<'3.12'", "numpy>=1.26.0;python_version>='3.12' and python_version<'3.13'", - "numpy>=2.1.0;python_version>='3.13'", + "numpy>=2.1.0;python_version>='3.13' and python_version<'3.14'", + "numpy>=2.3.2;python_version>='3.14'", "pandas>=1.4.0;python_version<'3.11'", "pandas>=1.5.0;python_version>='3.11' and python_version<'3.12'", "pandas>=2.1.1;python_version>='3.12' and python_version<'3.13'", - "pandas>=2.2.3;python_version>='3.13'", + "pandas>=2.2.3;python_version>='3.13' and python_version<'3.14'", + "pandas>=2.3.3;python_version>='3.14'", "scipy>=1.7.3;python_version<'3.10'", "scipy>=1.9.2;python_version>='3.10' and python_version<'3.12'", "scipy>=1.12.0;python_version>='3.12' and python_version<'3.13'", - "scipy>=1.14.1;python_version>='3.13'", + "scipy>=1.14.1;python_version>='3.13' and python_version<'3.14'", + "scipy>=1.16.1;python_version>='3.14'", "scikit-learn>=1.0.2;python_version<'3.10'", "scikit-learn>=1.1.0;python_version>='3.10' and python_version<'3.11'", "scikit-learn>=1.1.3;python_version>='3.11' and python_version<'3.12'", "scikit-learn>=1.3.1;python_version>='3.12' and python_version<'3.13'", - "scikit-learn>=1.5.2;python_version>='3.13'", + "scikit-learn>=1.5.2;python_version>='3.13' and python_version<'3.14'", + "scikit-learn>=1.8.0;python_version>='3.14'", 'Faker>=17, !=37.11.0', 'python-dateutil>=2.9', ] @@ -53,7 +58,10 @@ dependencies = [ rdt = { main = 'rdt.cli.__main__:main' } [project.optional-dependencies] -copulas = ['copulas>=0.12.1',] +copulas = [ + "copulas>=0.12.1;python_version<'3.14'", + "copulas>=0.14.0;python_version>='3.14'", +] pyarrow = ['pyarrow>=17.0.0',] test = [ 'rdt[pyarrow]', diff --git a/tasks.py b/tasks.py index e0cfb2d6..befda31a 100644 --- a/tasks.py +++ b/tasks.py @@ -74,6 +74,8 @@ def _get_minimum_versions(dependencies, python_version): (spec.version for spec in req.specifier if spec.operator in ('>=', '==')), existing_version, ) + if isinstance(new_version, str): + new_version = Version(new_version) if new_version > existing_version: min_versions[req.name] = ( f'{req.name}=={new_version}' # Change when a valid newer version is found