diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c102ba0..a874ba7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -67,7 +67,7 @@ jobs: fetch-depth: 0 persist-credentials: false - - uses: hynek/build-and-inspect-python-package@efb823f52190ad02594531168b7a2d5790e66516 # v2.14.0 + - uses: hynek/build-and-inspect-python-package@ebd3b6c6d32b78607276633a23bdd4481bd23ca8 # v2.18.0 publish-docker: if: github.event_name != 'schedule' || github.repository == 'Calysto/octave_kernel' diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5e671db..8c80b38 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -139,7 +139,7 @@ jobs: with: persist-credentials: false - uses: calysto/maintainer_tools/actions/base-setup@v1 - - uses: hynek/build-and-inspect-python-package@efb823f52190ad02594531168b7a2d5790e66516 # v2.14.0 + - uses: hynek/build-and-inspect-python-package@ebd3b6c6d32b78607276633a23bdd4481bd23ca8 # v2.18.0 id: baipp with: include-free-threaded: "true" diff --git a/justfile b/justfile index 7a97928..9da60b7 100644 --- a/justfile +++ b/justfile @@ -7,7 +7,7 @@ default: @just --list install: - poetry install --with dev,test + poetry install --only main,dev,test poetry run pre-commit install docker-build: @@ -21,51 +21,51 @@ docker-run: docker run -it --rm -p {{PORT}}:8888 calysto/octave-notebook test *args="": - poetry install --with test + poetry install --only main,test poetry run pytest {{args}} test-kernel: - poetry install --with test + poetry install --only main,test poetry run python -m octave_kernel install --sys-prefix poetry run python -m unittest -v test_octave_kernel.py poetry run python -m octave_kernel.check poetry run python test_octave_kernel.py test-notebook: - poetry install --with test - poetry run jupyter nbconvert --to notebook --execute --ExecutePreprocessor.kernel_name=octave --ExecutePreprocessor.timeout=60 --stdout octave_kernel.ipynb > /dev/null + poetry install --only main,test + poetry run jupyter execute --kernel_name octave octave_kernel.ipynb cover *args="": - poetry install --with coverage + poetry install --only main,coverage poetry run pytest --cov=octave_kernel --cov-report=term-missing --cov-report=xml --cov-fail-under=90 {{args}} poetry run coverage html typing: - poetry install --with typing + poetry install --only main,typing poetry run mypy . --install-types --non-interactive run-notebook: - poetry install --with test + poetry install --only main,test poetry run jupyter notebook octave_kernel.ipynb test-manual: - poetry install --with dev + poetry install --only main,dev poetry run python -m octave_kernel install --sys-prefix poetry run jupyter-console --kernel=octave lint: - poetry install --with dev + poetry install --only main,dev poetry run pre-commit run ruff-format --all-files poetry run pre-commit run ruff-check --all-files poetry run pre-commit run validate-pyproject --all-files poetry run pre-commit run poetry-check --all-files pre-commit *args="": - poetry install --with dev + poetry install --only main,dev poetry run pre-commit run --all-files {{args}} _asv-setup: - poetry install --with benchmark + poetry install --only main,benchmark poetry run asv machine --yes benchmark *args="": _asv-setup @@ -75,9 +75,9 @@ benchmark-compare: _asv-setup poetry run asv continuous $(git merge-base HEAD origin/main) HEAD --split docs: - poetry install --with docs + poetry install --only main,docs poetry run mkdocs build docs-serve: - poetry install --with docs + poetry install --only main,docs poetry run mkdocs serve diff --git a/poetry.lock b/poetry.lock index 1ee92d5..4a39c72 100644 --- a/poetry.lock +++ b/poetry.lock @@ -201,7 +201,7 @@ version = "4.14.3" description = "Screen-scraping library" optional = false python-versions = ">=3.7.0" -groups = ["docs", "test", "typing"] +groups = ["docs"] files = [ {file = "beautifulsoup4-4.14.3-py3-none-any.whl", hash = "sha256:0918bfe44902e6ad8d57732ba310582e98da931428d231a5ecb9e7c703a735bb"}, {file = "beautifulsoup4-4.14.3.tar.gz", hash = "sha256:6292b1c5186d356bba669ef9f7f051757099565ad9ada5dd630bd9de5fa7fb86"}, @@ -224,7 +224,7 @@ version = "6.3.0" description = "An easy safelist-based HTML-sanitizing tool." optional = false python-versions = ">=3.10" -groups = ["docs", "test", "typing"] +groups = ["docs"] files = [ {file = "bleach-6.3.0-py3-none-any.whl", hash = "sha256:fe10ec77c93ddf3d13a73b035abaac7a9f5e436513864ccdad516693213c65d6"}, {file = "bleach-6.3.0.tar.gz", hash = "sha256:6f3b91b1c0a02bb9a78b5a454c92506aa0fdf197e1d5e114d2e00c6f64306d22"}, @@ -739,7 +739,7 @@ version = "0.7.1" description = "XML bomb protection for Python stdlib modules" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["docs", "test", "typing"] +groups = ["docs"] files = [ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, @@ -996,7 +996,7 @@ version = "3.1.6" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" -groups = ["docs", "test", "typing"] +groups = ["docs"] files = [ {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, @@ -1151,7 +1151,7 @@ version = "0.3.0" description = "Pygments theme using JupyterLab CSS variables" optional = false python-versions = ">=3.8" -groups = ["docs", "test", "typing"] +groups = ["docs"] files = [ {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, @@ -1333,7 +1333,7 @@ version = "3.0.3" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" -groups = ["docs", "test", "typing"] +groups = ["docs"] files = [ {file = "markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559"}, {file = "markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419"}, @@ -1517,7 +1517,7 @@ version = "3.2.0" description = "A sane and fast Markdown parser with useful plugins and renderers" optional = false python-versions = ">=3.8" -groups = ["docs", "test", "typing"] +groups = ["docs"] files = [ {file = "mistune-3.2.0-py3-none-any.whl", hash = "sha256:febdc629a3c78616b94393c6580551e0e34cc289987ec6c35ed3f4be42d0eee1"}, {file = "mistune-3.2.0.tar.gz", hash = "sha256:708487c8a8cdd99c9d90eb3ed4c3ed961246ff78ac82f03418f5183ab70e398a"}, @@ -1795,7 +1795,7 @@ version = "7.17.0" description = "Convert Jupyter Notebooks (.ipynb files) to other formats." optional = false python-versions = ">=3.9" -groups = ["docs", "test", "typing"] +groups = ["docs"] files = [ {file = "nbconvert-7.17.0-py3-none-any.whl", hash = "sha256:4f99a63b337b9a23504347afdab24a11faa7d86b405e5c8f9881cd313336d518"}, {file = "nbconvert-7.17.0.tar.gz", hash = "sha256:1b2696f1b5be12309f6c7d707c24af604b87dfaf6d950794c7b07acab96dda78"}, @@ -1906,7 +1906,7 @@ version = "1.5.1" description = "Utilities for writing pandoc filters in python" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -groups = ["docs", "test", "typing"] +groups = ["docs"] files = [ {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, @@ -2668,7 +2668,7 @@ version = "2.8.3" description = "A modern CSS selector implementation for Beautiful Soup." optional = false python-versions = ">=3.9" -groups = ["docs", "test", "typing"] +groups = ["docs"] files = [ {file = "soupsieve-2.8.3-py3-none-any.whl", hash = "sha256:ed64f2ba4eebeab06cc4962affce381647455978ffc1e36bb79a545b91f45a95"}, {file = "soupsieve-2.8.3.tar.gz", hash = "sha256:3267f1eeea4251fb42728b6dfb746edc9acaffc4a45b27e19450b676586e8349"}, @@ -2715,7 +2715,7 @@ version = "1.4.0" description = "A tiny CSS parser" optional = false python-versions = ">=3.8" -groups = ["docs", "test", "typing"] +groups = ["docs"] files = [ {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, @@ -2775,7 +2775,7 @@ files = [ {file = "typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"}, {file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"}, ] -markers = {main = "python_version == \"3.11\"", dev = "python_version == \"3.11\""} +markers = {main = "python_version == \"3.11\"", dev = "python_version == \"3.11\"", test = "python_version < \"3.13\""} [[package]] name = "urllib3" @@ -2874,7 +2874,7 @@ version = "0.5.1" description = "Character encoding aliases for legacy web content" optional = false python-versions = "*" -groups = ["docs", "test", "typing"] +groups = ["docs"] files = [ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, @@ -2903,4 +2903,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = ">=3.11" -content-hash = "940aeeef0279206e3097727290a1bb34956198ed4d67563db6b7b4dc9e3c14af" +content-hash = "2a9f02a6a21c46800cd68c6d75d6a798ae8ec41a3cc37114d61176e1a174cadd" diff --git a/pyproject.toml b/pyproject.toml index c7c66c2..69f9122 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,6 +17,7 @@ classifiers = [ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Programming Language :: Python :: Free Threading", "Topic :: Scientific/Engineering", "Topic :: Software Development", @@ -38,7 +39,7 @@ content-type = "text/markdown" [dependency-groups] dev = ["pre-commit", "jupyter-console"] -test = ["pytest", "nbconvert", "jupyter_kernel_test"] +test = ["pytest", "nbclient", "jupyter_kernel_test"] typing = [{ include-group = "test" }, "pip", "mypy>=1.0"] coverage = ["pytest", "pytest-cov"] benchmark = ["asv"]