chore(dev): move dev-dependencies inside dependency-groups (#542)

* chore(dev): move dev-dependencies inside dependency-groups

* fix(ci): ci was not broken
This commit is contained in:
Jérome Eertmans
2025-04-18 14:15:30 +02:00
committed by GitHub
parent a5412a8df2
commit 0c6cd67038
6 changed files with 142 additions and 102 deletions

View File

@ -96,7 +96,7 @@ jobs:
uses: ssciwr/setup-mesa-dist-win@v2 uses: ssciwr/setup-mesa-dist-win@v2
- name: Run pytest - name: Run pytest
run: uv run --python ${{ matrix.pyversion }} --frozen --extra tests pytest run: uv run --python ${{ matrix.pyversion }} --frozen --group tests --no-dev pytest
- name: Upload to codecov.io - name: Upload to codecov.io
uses: codecov/codecov-action@v5 uses: codecov/codecov-action@v5

View File

@ -6,13 +6,13 @@ build:
apt_packages: apt_packages:
- libpango1.0-dev - libpango1.0-dev
- ffmpeg - ffmpeg
jobs:
post_create_environment:
- asdf plugin add uv
- asdf install uv latest
- asdf global uv latest
- UV_PROJECT_ENVIRONMENT=$READTHEDOCS_VIRTUALENV_PATH uv sync --group docs --no-dev --no-cache
sphinx: sphinx:
builder: html builder: html
configuration: docs/source/conf.py configuration: docs/source/conf.py
fail_on_warning: true fail_on_warning: true
python:
install:
- method: pip
path: .
extra_requirements:
- docs

View File

@ -10,6 +10,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
(unreleased)= (unreleased)=
## [Unreleased](https://github.com/jeertmans/manim-slides/compare/v5.5.1...HEAD) ## [Unreleased](https://github.com/jeertmans/manim-slides/compare/v5.5.1...HEAD)
(unreleased-chore)=
### Chore
- Moved `docs` and `tests` extras, as well as `dev-dependencies`,
inside groups in `dependency-groups`. This could break existing code
when using one of those extras, but as they were not part of the public API,
we do not consider this to be a **breaking change**.
[#542](https://github.com/jeertmans/manim-slides/pull/542)
(v5.5.1)= (v5.5.1)=
## [v5.5.1](https://github.com/jeertmans/manim-slides/compare/v5.5.0...v5.5.1) ## [v5.5.1](https://github.com/jeertmans/manim-slides/compare/v5.5.0...v5.5.1)

View File

@ -32,7 +32,7 @@ and development dependencies. If not already, please install this tool.
With uv, installation becomes straightforward: With uv, installation becomes straightforward:
```bash ```bash
uv sync --all-extras uv sync
``` ```
:::{note} :::{note}

View File

@ -2,6 +2,39 @@
build-backend = "hatchling.build" build-backend = "hatchling.build"
requires = ["hatchling", "hatch-fancy-pypi-readme"] requires = ["hatchling", "hatch-fancy-pypi-readme"]
[dependency-groups]
dev = [
{include-group = "docs"},
{include-group = "tests"},
"bump-my-version>=0.20.3",
"pre-commit>=3.5.0",
]
docs = [
"manim-slides[magic,manim,pyqt6,sphinx-directive]",
"furo>=2023.5.20",
"ipykernel>=6.25.1",
"myst-parser>=2.0.0",
"nbsphinx>=0.9.2",
"pandoc>=2.3",
"pygments<2.19", # See: https://github.com/ManimCommunity/manim/issues/4104
"sphinx>=7.0.1",
"sphinxcontrib-programoutput>=0.18",
"sphinx-design>=0.6.1",
"sphinx-click>=4.4.0",
"sphinx-copybutton>=0.5.1",
"sphinxext-opengraph>=0.7.5",
]
tests = [
"importlib-metadata>=8.6.1;python_version<'3.10'",
"manim-slides[full,manimgl,pyqt6,pyside6,sphinx-directive]",
"pytest>=7.4.0",
"pytest-cov>=4.1.0",
"pytest-env>=0.8.2",
"pytest-missing-modules>=0.1.0",
"pytest-qt>=4.2.0",
"setuptools>=73.0.1",
]
[project] [project]
authors = [{name = "Jérome Eertmans", email = "jeertmans@icloud.com"}] authors = [{name = "Jérome Eertmans", email = "jeertmans@icloud.com"}]
classifiers = [ classifiers = [
@ -42,21 +75,6 @@ name = "manim-slides"
requires-python = ">=3.9" requires-python = ">=3.9"
[project.optional-dependencies] [project.optional-dependencies]
docs = [
"manim-slides[magic,manim,pyqt6,sphinx-directive]",
"furo>=2023.5.20",
"ipykernel>=6.25.1",
"myst-parser>=2.0.0",
"nbsphinx>=0.9.2",
"pandoc>=2.3",
"pygments<2.19", # See: https://github.com/ManimCommunity/manim/issues/4104
"sphinx>=7.0.1",
"sphinxcontrib-programoutput>=0.18",
"sphinx-design>=0.6.1",
"sphinx-click>=4.4.0",
"sphinx-copybutton>=0.5.1",
"sphinxext-opengraph>=0.7.5",
]
full = [ full = [
"manim-slides[magic,manim,sphinx-directive]", "manim-slides[magic,manim,sphinx-directive]",
] ]
@ -68,15 +86,6 @@ pyqt6-full = ["manim-slides[full,pyqt6]"]
pyside6 = ["pyside6>=6.6.1,!=6.8.1.1"] pyside6 = ["pyside6>=6.6.1,!=6.8.1.1"]
pyside6-full = ["manim-slides[full,pyside6]"] pyside6-full = ["manim-slides[full,pyside6]"]
sphinx-directive = ["docutils>=0.20.1", "manim-slides[manim]"] sphinx-directive = ["docutils>=0.20.1", "manim-slides[manim]"]
tests = [
"importlib-metadata>=8.6.1;python_version<'3.10'",
"manim-slides[full,manimgl,pyqt6,pyside6,sphinx-directive]",
"pytest>=7.4.0",
"pytest-cov>=4.1.0",
"pytest-env>=0.8.2",
"pytest-missing-modules>=0.1.0",
"pytest-qt>=4.2.0",
]
[project.scripts] [project.scripts]
manim-slides = "manim_slides.__main__:cli" manim-slides = "manim_slides.__main__:cli"
@ -225,10 +234,3 @@ isort = {known-first-party = ["manim_slides", "tests"]}
[tool.ruff.lint.per-file-ignores] [tool.ruff.lint.per-file-ignores]
"docs/source/reference/magic_example.ipynb" = ["F403", "F405"] "docs/source/reference/magic_example.ipynb" = ["F403", "F405"]
"tests/test_slide.py" = ["N801"] "tests/test_slide.py" = ["N801"]
[tool.uv]
dev-dependencies = [
"bump-my-version>=0.20.3",
"pre-commit>=3.5.0",
"setuptools>=73.0.1",
]

155
uv.lock generated
View File

@ -1549,27 +1549,6 @@ dependencies = [
] ]
[package.optional-dependencies] [package.optional-dependencies]
docs = [
{ name = "docutils" },
{ name = "furo" },
{ name = "ipykernel" },
{ name = "ipython", version = "8.18.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" },
{ name = "ipython", version = "8.31.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
{ name = "manim" },
{ name = "myst-parser", version = "3.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" },
{ name = "myst-parser", version = "4.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
{ name = "nbsphinx" },
{ name = "pandoc" },
{ name = "pygments" },
{ name = "pyqt6" },
{ name = "sphinx", version = "7.4.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" },
{ name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
{ name = "sphinx-click" },
{ name = "sphinx-copybutton" },
{ name = "sphinx-design" },
{ name = "sphinxcontrib-programoutput" },
{ name = "sphinxext-opengraph" },
]
full = [ full = [
{ name = "docutils" }, { name = "docutils" },
{ name = "ipython", version = "8.18.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "ipython", version = "8.18.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" },
@ -1611,26 +1590,59 @@ sphinx-directive = [
{ name = "docutils" }, { name = "docutils" },
{ name = "manim" }, { name = "manim" },
] ]
tests = [
{ name = "docutils" }, [package.dev-dependencies]
dev = [
{ name = "bump-my-version" },
{ name = "furo" },
{ name = "importlib-metadata", marker = "python_full_version < '3.10'" }, { name = "importlib-metadata", marker = "python_full_version < '3.10'" },
{ name = "ipython", version = "8.18.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "ipykernel" },
{ name = "ipython", version = "8.31.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "manim-slides", extra = ["full", "magic", "manim", "manimgl", "pyqt6", "pyside6", "sphinx-directive"] },
{ name = "manim" }, { name = "myst-parser", version = "3.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" },
{ name = "manimgl" }, { name = "myst-parser", version = "4.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
{ name = "pyqt6" }, { name = "nbsphinx" },
{ name = "pyside6" }, { name = "pandoc" },
{ name = "pre-commit" },
{ name = "pygments" },
{ name = "pytest" }, { name = "pytest" },
{ name = "pytest-cov" }, { name = "pytest-cov" },
{ name = "pytest-env" }, { name = "pytest-env" },
{ name = "pytest-missing-modules" }, { name = "pytest-missing-modules" },
{ name = "pytest-qt" }, { name = "pytest-qt" },
{ name = "setuptools" },
{ name = "sphinx", version = "7.4.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" },
{ name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
{ name = "sphinx-click" },
{ name = "sphinx-copybutton" },
{ name = "sphinx-design" },
{ name = "sphinxcontrib-programoutput" },
{ name = "sphinxext-opengraph" },
] ]
docs = [
[package.dev-dependencies] { name = "furo" },
dev = [ { name = "ipykernel" },
{ name = "bump-my-version" }, { name = "manim-slides", extra = ["magic", "manim", "pyqt6", "sphinx-directive"] },
{ name = "pre-commit" }, { name = "myst-parser", version = "3.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" },
{ name = "myst-parser", version = "4.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
{ name = "nbsphinx" },
{ name = "pandoc" },
{ name = "pygments" },
{ name = "sphinx", version = "7.4.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" },
{ name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
{ name = "sphinx-click" },
{ name = "sphinx-copybutton" },
{ name = "sphinx-design" },
{ name = "sphinxcontrib-programoutput" },
{ name = "sphinxext-opengraph" },
]
tests = [
{ name = "importlib-metadata", marker = "python_full_version < '3.10'" },
{ name = "manim-slides", extra = ["full", "manimgl", "pyqt6", "pyside6", "sphinx-directive"] },
{ name = "pytest" },
{ name = "pytest-cov" },
{ name = "pytest-env" },
{ name = "pytest-missing-modules" },
{ name = "pytest-qt" },
{ name = "setuptools" }, { name = "setuptools" },
] ]
@ -1640,72 +1652,89 @@ requires-dist = [
{ name = "beautifulsoup4", specifier = ">=4.12.3" }, { name = "beautifulsoup4", specifier = ">=4.12.3" },
{ name = "click", specifier = ">=8.1.3" }, { name = "click", specifier = ">=8.1.3" },
{ name = "click-default-group", specifier = ">=1.2.2" }, { name = "click-default-group", specifier = ">=1.2.2" },
{ name = "docutils", marker = "extra == 'docs'", specifier = ">=0.20.1" },
{ name = "docutils", marker = "extra == 'full'", specifier = ">=0.20.1" }, { name = "docutils", marker = "extra == 'full'", specifier = ">=0.20.1" },
{ name = "docutils", marker = "extra == 'pyqt6-full'", specifier = ">=0.20.1" }, { name = "docutils", marker = "extra == 'pyqt6-full'", specifier = ">=0.20.1" },
{ name = "docutils", marker = "extra == 'pyside6-full'", specifier = ">=0.20.1" }, { name = "docutils", marker = "extra == 'pyside6-full'", specifier = ">=0.20.1" },
{ name = "docutils", marker = "extra == 'sphinx-directive'", specifier = ">=0.20.1" }, { name = "docutils", marker = "extra == 'sphinx-directive'", specifier = ">=0.20.1" },
{ name = "docutils", marker = "extra == 'tests'", specifier = ">=0.20.1" },
{ name = "furo", marker = "extra == 'docs'", specifier = ">=2023.5.20" },
{ name = "importlib-metadata", marker = "python_full_version < '3.10' and extra == 'tests'", specifier = ">=8.6.1" },
{ name = "ipykernel", marker = "extra == 'docs'", specifier = ">=6.25.1" },
{ name = "ipython", marker = "extra == 'docs'", specifier = ">=8.12.2" },
{ name = "ipython", marker = "extra == 'full'", specifier = ">=8.12.2" }, { name = "ipython", marker = "extra == 'full'", specifier = ">=8.12.2" },
{ name = "ipython", marker = "extra == 'magic'", specifier = ">=8.12.2" }, { name = "ipython", marker = "extra == 'magic'", specifier = ">=8.12.2" },
{ name = "ipython", marker = "extra == 'pyqt6-full'", specifier = ">=8.12.2" }, { name = "ipython", marker = "extra == 'pyqt6-full'", specifier = ">=8.12.2" },
{ name = "ipython", marker = "extra == 'pyside6-full'", specifier = ">=8.12.2" }, { name = "ipython", marker = "extra == 'pyside6-full'", specifier = ">=8.12.2" },
{ name = "ipython", marker = "extra == 'tests'", specifier = ">=8.12.2" },
{ name = "jinja2", specifier = ">=3.1.2" }, { name = "jinja2", specifier = ">=3.1.2" },
{ name = "lxml", specifier = ">=4.9.2" }, { name = "lxml", specifier = ">=4.9.2" },
{ name = "manim", marker = "extra == 'docs'", specifier = ">=0.19" },
{ name = "manim", marker = "extra == 'full'", specifier = ">=0.19" }, { name = "manim", marker = "extra == 'full'", specifier = ">=0.19" },
{ name = "manim", marker = "extra == 'magic'", specifier = ">=0.19" }, { name = "manim", marker = "extra == 'magic'", specifier = ">=0.19" },
{ name = "manim", marker = "extra == 'manim'", specifier = ">=0.19" }, { name = "manim", marker = "extra == 'manim'", specifier = ">=0.19" },
{ name = "manim", marker = "extra == 'pyqt6-full'", specifier = ">=0.19" }, { name = "manim", marker = "extra == 'pyqt6-full'", specifier = ">=0.19" },
{ name = "manim", marker = "extra == 'pyside6-full'", specifier = ">=0.19" }, { name = "manim", marker = "extra == 'pyside6-full'", specifier = ">=0.19" },
{ name = "manim", marker = "extra == 'sphinx-directive'", specifier = ">=0.19" }, { name = "manim", marker = "extra == 'sphinx-directive'", specifier = ">=0.19" },
{ name = "manim", marker = "extra == 'tests'", specifier = ">=0.19" },
{ name = "manimgl", marker = "extra == 'manimgl'", specifier = ">=1.7.2" }, { name = "manimgl", marker = "extra == 'manimgl'", specifier = ">=1.7.2" },
{ name = "manimgl", marker = "extra == 'tests'", specifier = ">=1.7.2" },
{ name = "myst-parser", marker = "extra == 'docs'", specifier = ">=2.0.0" },
{ name = "nbsphinx", marker = "extra == 'docs'", specifier = ">=0.9.2" },
{ name = "numpy", specifier = ">=1.19" }, { name = "numpy", specifier = ">=1.19" },
{ name = "pandoc", marker = "extra == 'docs'", specifier = ">=2.3" },
{ name = "pillow", specifier = ">=9.5.0" }, { name = "pillow", specifier = ">=9.5.0" },
{ name = "pydantic", specifier = ">=2.0.1" }, { name = "pydantic", specifier = ">=2.0.1" },
{ name = "pydantic-extra-types", specifier = ">=2.0.0" }, { name = "pydantic-extra-types", specifier = ">=2.0.0" },
{ name = "pygments", marker = "extra == 'docs'", specifier = "<2.19" },
{ name = "pyqt6", marker = "extra == 'docs'", specifier = ">=6.7.0" },
{ name = "pyqt6", marker = "extra == 'pyqt6'", specifier = ">=6.7.0" }, { name = "pyqt6", marker = "extra == 'pyqt6'", specifier = ">=6.7.0" },
{ name = "pyqt6", marker = "extra == 'pyqt6-full'", specifier = ">=6.7.0" }, { name = "pyqt6", marker = "extra == 'pyqt6-full'", specifier = ">=6.7.0" },
{ name = "pyqt6", marker = "extra == 'tests'", specifier = ">=6.7.0" },
{ name = "pyside6", marker = "extra == 'pyside6'", specifier = ">=6.6.1,!=6.8.1.1" }, { name = "pyside6", marker = "extra == 'pyside6'", specifier = ">=6.6.1,!=6.8.1.1" },
{ name = "pyside6", marker = "extra == 'pyside6-full'", specifier = ">=6.6.1,!=6.8.1.1" }, { name = "pyside6", marker = "extra == 'pyside6-full'", specifier = ">=6.6.1,!=6.8.1.1" },
{ name = "pyside6", marker = "extra == 'tests'", specifier = ">=6.6.1,!=6.8.1.1" },
{ name = "pytest", marker = "extra == 'tests'", specifier = ">=7.4.0" },
{ name = "pytest-cov", marker = "extra == 'tests'", specifier = ">=4.1.0" },
{ name = "pytest-env", marker = "extra == 'tests'", specifier = ">=0.8.2" },
{ name = "pytest-missing-modules", marker = "extra == 'tests'", specifier = ">=0.1.0" },
{ name = "pytest-qt", marker = "extra == 'tests'", specifier = ">=4.2.0" },
{ name = "python-pptx", specifier = ">=0.6.21" }, { name = "python-pptx", specifier = ">=0.6.21" },
{ name = "qtpy", specifier = ">=2.4.1" }, { name = "qtpy", specifier = ">=2.4.1" },
{ name = "requests", specifier = ">=2.28.1" }, { name = "requests", specifier = ">=2.28.1" },
{ name = "rich", specifier = ">=13.3.2" }, { name = "rich", specifier = ">=13.3.2" },
{ name = "rtoml", specifier = ">=0.11.0" }, { name = "rtoml", specifier = ">=0.11.0" },
{ name = "sphinx", marker = "extra == 'docs'", specifier = ">=7.0.1" },
{ name = "sphinx-click", marker = "extra == 'docs'", specifier = ">=4.4.0" },
{ name = "sphinx-copybutton", marker = "extra == 'docs'", specifier = ">=0.5.1" },
{ name = "sphinx-design", marker = "extra == 'docs'", specifier = ">=0.6.1" },
{ name = "sphinxcontrib-programoutput", marker = "extra == 'docs'", specifier = ">=0.18" },
{ name = "sphinxext-opengraph", marker = "extra == 'docs'", specifier = ">=0.7.5" },
{ name = "tqdm", specifier = ">=4.64.1" }, { name = "tqdm", specifier = ">=4.64.1" },
] ]
provides-extras = ["docs", "full", "magic", "manim", "manimgl", "pyqt6", "pyqt6-full", "pyside6", "pyside6-full", "sphinx-directive", "tests"] provides-extras = ["full", "magic", "manim", "manimgl", "pyqt6", "pyqt6-full", "pyside6", "pyside6-full", "sphinx-directive"]
[package.metadata.requires-dev] [package.metadata.requires-dev]
dev = [ dev = [
{ name = "bump-my-version", specifier = ">=0.20.3" }, { name = "bump-my-version", specifier = ">=0.20.3" },
{ name = "furo", specifier = ">=2023.5.20" },
{ name = "importlib-metadata", marker = "python_full_version < '3.10'", specifier = ">=8.6.1" },
{ name = "ipykernel", specifier = ">=6.25.1" },
{ name = "manim-slides", extras = ["full", "manimgl", "pyqt6", "pyside6", "sphinx-directive"] },
{ name = "manim-slides", extras = ["magic", "manim", "pyqt6", "sphinx-directive"] },
{ name = "myst-parser", specifier = ">=2.0.0" },
{ name = "nbsphinx", specifier = ">=0.9.2" },
{ name = "pandoc", specifier = ">=2.3" },
{ name = "pre-commit", specifier = ">=3.5.0" }, { name = "pre-commit", specifier = ">=3.5.0" },
{ name = "pygments", specifier = "<2.19" },
{ name = "pytest", specifier = ">=7.4.0" },
{ name = "pytest-cov", specifier = ">=4.1.0" },
{ name = "pytest-env", specifier = ">=0.8.2" },
{ name = "pytest-missing-modules", specifier = ">=0.1.0" },
{ name = "pytest-qt", specifier = ">=4.2.0" },
{ name = "setuptools", specifier = ">=73.0.1" },
{ name = "sphinx", specifier = ">=7.0.1" },
{ name = "sphinx-click", specifier = ">=4.4.0" },
{ name = "sphinx-copybutton", specifier = ">=0.5.1" },
{ name = "sphinx-design", specifier = ">=0.6.1" },
{ name = "sphinxcontrib-programoutput", specifier = ">=0.18" },
{ name = "sphinxext-opengraph", specifier = ">=0.7.5" },
]
docs = [
{ name = "furo", specifier = ">=2023.5.20" },
{ name = "ipykernel", specifier = ">=6.25.1" },
{ name = "manim-slides", extras = ["magic", "manim", "pyqt6", "sphinx-directive"] },
{ name = "myst-parser", specifier = ">=2.0.0" },
{ name = "nbsphinx", specifier = ">=0.9.2" },
{ name = "pandoc", specifier = ">=2.3" },
{ name = "pygments", specifier = "<2.19" },
{ name = "sphinx", specifier = ">=7.0.1" },
{ name = "sphinx-click", specifier = ">=4.4.0" },
{ name = "sphinx-copybutton", specifier = ">=0.5.1" },
{ name = "sphinx-design", specifier = ">=0.6.1" },
{ name = "sphinxcontrib-programoutput", specifier = ">=0.18" },
{ name = "sphinxext-opengraph", specifier = ">=0.7.5" },
]
tests = [
{ name = "importlib-metadata", marker = "python_full_version < '3.10'", specifier = ">=8.6.1" },
{ name = "manim-slides", extras = ["full", "manimgl", "pyqt6", "pyside6", "sphinx-directive"] },
{ name = "pytest", specifier = ">=7.4.0" },
{ name = "pytest-cov", specifier = ">=4.1.0" },
{ name = "pytest-env", specifier = ">=0.8.2" },
{ name = "pytest-missing-modules", specifier = ">=0.1.0" },
{ name = "pytest-qt", specifier = ">=4.2.0" },
{ name = "setuptools", specifier = ">=73.0.1" }, { name = "setuptools", specifier = ">=73.0.1" },
] ]