diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index d62fac03..5d98c258 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -6,17 +6,17 @@ jobs: steps: - name: Check out repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: python-version: 3.9 - name: Install run: | python --version - python -m pip install --upgrade pip setuptools wheel + python -m pip install --upgrade pip python -m pip install .[test] - name: Test coverage @@ -24,6 +24,7 @@ jobs: python -m pytest --cov --cov-config=.coveragerc - name: Submit report to codecov - uses: codecov/codecov-action@v1 + uses: codecov/codecov-action@v5 + with: + token: ${{ secrets.CODECOV_TOKEN }} if: success() - diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index dd49f241..a72bee05 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -6,17 +6,17 @@ jobs: steps: - name: Check out repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: python-version: 3.9 - name: Install run: | python --version - python -m pip install --upgrade pip setuptools wheel + python -m pip install --upgrade pip python -m pip install .[docs] - name: Test documentation building diff --git a/.github/workflows/style.yml b/.github/workflows/style.yml index ab60e4b0..0c0e6ef6 100644 --- a/.github/workflows/style.yml +++ b/.github/workflows/style.yml @@ -6,17 +6,17 @@ jobs: steps: - name: Check out repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: python-version: 3.9 - name: Install tools run: | python --version - python -m pip install --upgrade pip setuptools wheel + python -m pip install --upgrade pip python -m pip install flake8 isort - name: Check code style diff --git a/.github/workflows/unit-test-pinned.yml b/.github/workflows/unit-test-pinned.yml index 1ce27bfc..246bff72 100644 --- a/.github/workflows/unit-test-pinned.yml +++ b/.github/workflows/unit-test-pinned.yml @@ -2,21 +2,21 @@ name: Pinned requirements on: [pull_request] jobs: unit-test-pinned: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - name: Check out repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - - name: Set up Python 3.6 - uses: actions/setup-python@v2 + - name: Set up Python 3.9 + uses: actions/setup-python@v5 with: - python-version: 3.6 + python-version: 3.9 - name: Install pinned dependencies run: | python --version - python -m pip install --upgrade pip setuptools wheel + python -m pip install --upgrade pip python -m pip install -r requirements/test.txt - name: Install diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index b9e31947..6a3f5a39 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -5,22 +5,22 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-20.04, windows-latest, macos-latest] - python-version: [3.6, 3.7, 3.8, 3.9, "3.10", "3.11"] + os: [ubuntu-latest, windows-latest, macos-latest] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] steps: - name: Check out repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install run: | python --version - python -m pip install --upgrade pip setuptools wheel + python -m pip install --upgrade pip python -m pip install .[test] - name: Run unit tests diff --git a/README.md b/README.md index 13d3ac3c..23b1da7c 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Users install `cellmlmanip` using pip. pip install cellmlmanip ``` -Cellmlmanip is tested and developed on Python 3.5 and higher. +Cellmlmanip is tested and developed on Python 3.9 and higher. ## Release notes For release notes see [RELEASE.md](./RELEASE.md) diff --git a/RELEASE.md b/RELEASE.md index daf509b0..d78ff39b 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,3 +1,8 @@ +# Release 0.3.7 +- Added support for Python 3.12 and 3.13. +- Dropped support for Python 3.6, 3.7 and 3.8 as they are at end of life. +- Pinned sympy to be < 1.13. See https://github.com/ModellingWebLab/cellmlmanip/issues/376. + # Release 0.3.6 - Added the ability to exclude a collection of tags from being used as variable names, by adding the `exclude_terms` parameter to `model.get_display_name`. This can be used for example to prevent ontology annotation that can be used multiple times from appearing as the display name of a variable. diff --git a/cellmlmanip/version.txt b/cellmlmanip/version.txt index 449d7e73..0f826853 100644 --- a/cellmlmanip/version.txt +++ b/cellmlmanip/version.txt @@ -1 +1 @@ -0.3.6 +0.3.7 diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..7b959378 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["setuptools>=64", "wheel"] +build-backend = "setuptools.build_meta" diff --git a/requirements/base.in b/requirements/base.in index 2965b0e5..72c3f449 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -1,6 +1,5 @@ -lxml>4.2.1 -pint==0.9 ; python_version < '3.8' -pint==0.10 ; python_version >= '3.8' -rdflib -networkx -sympy +lxml>=4.7 +pint>=0.9, <0.20 +rdflib>=4 +networkx>=2.1 +sympy>=1.4, <1.13 diff --git a/requirements/base.txt b/requirements/base.txt index ccab0170..d109d5ab 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,6 +1,6 @@ # -# This file is autogenerated by pip-compile -# To update, run: +# This file is autogenerated by pip-compile with Python 3.9 +# by the following command: # # pip-compile --output-file=base.txt base.in # @@ -8,19 +8,21 @@ decorator==4.4.2 # via networkx isodate==0.6.0 # via rdflib -lxml==4.6.2 +lxml==5.3.0 # via -r base.in mpmath==1.1.0 # via sympy networkx==2.5 # via -r base.in -pint==0.9 ; python_version < "3.8" +pint==0.19.2 # via -r base.in pyparsing==2.4.7 # via rdflib rdflib==5.0.0 # via -r base.in six==1.15.0 - # via rdflib + # via + # isodate + # rdflib sympy==1.7.1 # via -r base.in diff --git a/requirements/dev.txt b/requirements/dev.txt index 9d23a2a7..7b8991e6 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,33 +1,21 @@ # -# This file is autogenerated by pip-compile -# To update, run: +# This file is autogenerated by pip-compile with Python 3.9 +# by the following command: # # pip-compile --output-file=dev.txt dev.in # attrs==20.3.0 # via pytest -certifi==2020.12.5 - # via requests -chardet==4.0.0 - # via requests click==7.1.2 # via pip-tools coverage==5.4 - # via - # pytest-cov + # via pytest-cov decorator==4.4.2 # via networkx flake8==3.8.4 # via # -r dev.in # -r test.in -idna==2.10 - # via requests -importlib-metadata==3.4.0 - # via - # flake8 - # pluggy - # pytest iniconfig==1.1.1 # via pytest isodate==0.6.0 @@ -36,7 +24,7 @@ isort==5.7.0 # via # -r dev.in # -r test.in -lxml==4.6.2 +lxml==5.3.0 # via -r base.in mccabe==0.6.1 # via flake8 @@ -46,7 +34,7 @@ networkx==2.5 # via -r base.in packaging==20.8 # via pytest -pint==0.9 ; python_version < "3.8" +pint==0.19.2 # via -r base.in pip-tools==5.5.0 # via -r dev.in @@ -62,15 +50,14 @@ pyparsing==2.4.7 # via # packaging # rdflib -pytest-cov==2.11.1 - # via -r test.in pytest==6.2.2 # via # -r test.in # pytest-cov +pytest-cov==2.11.1 + # via -r test.in rdflib==5.0.0 # via -r base.in -requests==2.25.1 six==1.15.0 # via # isodate @@ -79,12 +66,6 @@ sympy==1.7.1 # via -r base.in toml==0.10.2 # via pytest -typing-extensions==3.7.4.3 - # via importlib-metadata -urllib3==1.26.3 - # via requests -zipp==3.4.0 - # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: # pip diff --git a/requirements/test.txt b/requirements/test.txt index eded6f38..2713dea2 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -1,36 +1,24 @@ # -# This file is autogenerated by pip-compile -# To update, run: +# This file is autogenerated by pip-compile with Python 3.9 +# by the following command: # # pip-compile --output-file=test.txt test.in # attrs==20.3.0 # via pytest -certifi==2020.12.5 - # via requests -chardet==4.0.0 - # via requests coverage==5.4 - # via - # pytest-cov + # via pytest-cov decorator==4.4.2 # via networkx flake8==3.8.4 # via -r test.in -idna==2.10 - # via requests -importlib-metadata==3.4.0 - # via - # flake8 - # pluggy - # pytest iniconfig==1.1.1 # via pytest isodate==0.6.0 # via rdflib isort==5.7.0 # via -r test.in -lxml==4.6.2 +lxml==5.3.0 # via -r base.in mccabe==0.6.1 # via flake8 @@ -40,7 +28,7 @@ networkx==2.5 # via -r base.in packaging==20.8 # via pytest -pint==0.9 ; python_version < "3.8" +pint==0.19.2 # via -r base.in pluggy==0.13.1 # via pytest @@ -54,15 +42,14 @@ pyparsing==2.4.7 # via # packaging # rdflib -pytest-cov==2.11.1 - # via -r test.in pytest==6.2.2 # via # -r test.in # pytest-cov +pytest-cov==2.11.1 + # via -r test.in rdflib==5.0.0 # via -r base.in -requests==2.25.1 six==1.15.0 # via # isodate @@ -71,9 +58,3 @@ sympy==1.7.1 # via -r base.in toml==0.10.2 # via pytest -typing-extensions==3.7.4.3 - # via importlib-metadata -urllib3==1.26.3 - # via requests -zipp==3.4.0 - # via importlib-metadata diff --git a/setup.py b/setup.py index bf1df611..90951539 100644 --- a/setup.py +++ b/setup.py @@ -28,13 +28,13 @@ packages=find_packages(exclude=('tests', 'docs')), include_package_data=True, - python_requires='>=3.6', + python_requires='>=3.9', install_requires=[ - 'lxml>=4.6.5, <5', + 'lxml>=4.7', 'networkx>=2.1', 'Pint>=0.9, <0.20', 'rdflib>=4', - 'sympy>=1.4', + 'sympy>=1.4, <1.13', ], extras_require={ 'docs': [