From a9e1ac351130a1a1e5041dba0eb7423933f82d09 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 4 Jul 2026 12:38:49 +0000 Subject: [PATCH 1/3] Python 3.14 on CI and ReadTheDocs - Bump CI matrix max Python from 3.13 to 3.14 - Update RTD to ubuntu-lts-latest and Python 3.14 - Remove sphinx-hoverxref and Sphinx<9 pin (follows grill-names #34) - Add Python 3.14 trove classifier Co-authored-by: chrizzftd --- .github/workflows/python-package.yml | 4 ++-- .readthedocs.yml | 4 ++-- docs/source/conf.py | 7 ------- setup.cfg | 7 ++++--- 4 files changed, 8 insertions(+), 14 deletions(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index e2cd7412..a3b5a28f 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -19,7 +19,7 @@ jobs: install-arguments: ".[create] PySide2 usd-core==21.11 PyOpenGL" # 21.11 enables AR-2.0 by default - python-version: "3.10" install-arguments: ". pygraphviz PySide2 usd-core==23.2 PyOpenGL" - - python-version: "3.13" + - python-version: "3.14" install-arguments: ".[full,create]" steps: - uses: actions/checkout@v5 @@ -31,7 +31,7 @@ jobs: uses: ts-graphviz/setup-graphviz@v2 - name: Install Required Libraries # Needed for PySide6 CI only: https://stackoverflow.com/questions/75907862/pyside6-wsl2-importerror-libegl-so-1 - if: "matrix.python-version == '3.13'" + if: "matrix.python-version == '3.14'" run: | sudo apt-get install -y libegl1 - name: Install diff --git a/.readthedocs.yml b/.readthedocs.yml index bd01d402..1ed0e33a 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -1,8 +1,8 @@ version: 2 # required for PY39+ build: - os: ubuntu-20.04 + os: ubuntu-lts-latest tools: - python: "3.10" + python: "3.14" apt_packages: - "graphviz" diff --git a/docs/source/conf.py b/docs/source/conf.py index f8a4d932..65aad7bf 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -46,7 +46,6 @@ 'sphinx_toggleprompt', 'sphinx_togglebutton', 'sphinx_inline_tabs', - 'hoverxref.extension', 'sphinx.ext.autosectionlabel', 'sphinxcontrib.doxylink', ] @@ -62,12 +61,6 @@ 'grill.names': ('https://grill-names.readthedocs.io/en/latest/', None) } -hoverxref_auto_ref = True -hoverxref_default_type = 'tooltip' - -hoverxref_intersphinx = list(set(intersphinx_mapping) - {'python', 'usd', 'networkx'}) # only works for RTD hosted docs -hoverxref_intersphinx_types = dict.fromkeys(intersphinx_mapping, hoverxref_default_type) -hoverxref_domains = ['py'] always_document_param_types = True autodoc_member_order = 'groupwise' maximum_signature_line_length = 150 diff --git a/setup.cfg b/setup.cfg index 6f56714a..38e4ba8b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -8,12 +8,14 @@ keywords = cg cgi audiovisual pipeline tools usd pxr cook pixar 3d animation author_email = chris.gfz@gmail.com author = Christian López Barrón url = https://github.com/thegrill/grill +# Align with https://devguide.python.org/versions/ classifiers = Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 Programming Language :: Python :: 3.11 Programming Language :: Python :: 3.12 Programming Language :: Python :: 3.13 + Programming Language :: Python :: 3.14 [options] install_requires = @@ -43,19 +45,18 @@ include = grill.* # conda install conda-forge::graphviz=11 # 13.1.2 brings up libffi which messes up _ctypes from python-3.13, and 12 fails to load gvplugin_pango.dll # python -m pip install grill-names>=2.6.0 networkx>=3.4 pydot>=3.0.1 numpy PyOpenGL pyside6 # docs dependencies: -# python -m pip install -U "sphinx>=7.2,<9" myst-parser sphinx-toggleprompt sphinx-copybutton sphinx-togglebutton "sphinx-hoverxref>=1.4.1" sphinx_autodoc_typehints sphinx-inline-tabs shibuya sphinxcontrib-doxylink +# python -m pip install -U sphinx myst-parser sphinx-toggleprompt sphinx-copybutton sphinx-togglebutton sphinx_autodoc_typehints sphinx-inline-tabs shibuya sphinxcontrib-doxylink # For EDGEDB (coming up) # python -m pip install edgedb # To install packages in editable mode, cd to desired package repo, then: # python -m pip install -e . docs = - sphinx>=7.2,<9 + sphinx myst-parser sphinx-toggleprompt sphinx-copybutton sphinx-togglebutton - sphinx-hoverxref>=1.4.1,<2 sphinx_autodoc_typehints sphinx-inline-tabs shibuya From d984ae9d7b5cf0c708e9ba913ea692e31a50d8d6 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 4 Jul 2026 12:53:19 +0000 Subject: [PATCH 2/3] Ignore pyparsing deprecation warnings from pydot in CI tests pyparsing 3.3+ emits PyparsingDeprecationWarning for pydot's legacy API usage. PYTHONWARNINGS=error treats these as failures in graph layout tests. Co-authored-by: chrizzftd --- tests/conftest.py | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 tests/conftest.py diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 00000000..bb3fa473 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,9 @@ +import warnings + +try: + from pyparsing.warnings import PyparsingWarning +except ImportError: + pass +else: + # pydot still calls pre-PEP8 pyparsing APIs; pyparsing 3.3+ raises these under PYTHONWARNINGS=error. + warnings.filterwarnings("ignore", category=PyparsingWarning) From 1ac19e851ac9be20aa340dcdbf31bdc2902e1732 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 4 Jul 2026 12:54:58 +0000 Subject: [PATCH 3/3] Fix CI: ignore pydot pyparsing DeprecationWarnings under error mode The existing ignore:::pyparsing filter does not match pyparsing 3.3+ warnings from pydot. Ignore DeprecationWarning instead. Co-authored-by: chrizzftd --- .github/workflows/python-package.yml | 3 ++- tests/conftest.py | 9 --------- 2 files changed, 2 insertions(+), 10 deletions(-) delete mode 100644 tests/conftest.py diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index a3b5a28f..1afa7e76 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -41,7 +41,8 @@ jobs: python -m pip install ${{ matrix.install-arguments }} - name: Test run: | - PYTHONWARNINGS=error,ignore:::pyparsing pytest --cov --durations=10 . + # pydot uses pre-PEP8 pyparsing APIs; pyparsing 3.3+ emits DeprecationWarnings under error mode. + PYTHONWARNINGS=error,ignore::DeprecationWarning pytest --cov --durations=10 . # https://github.com/marketplace/actions/codecov - name: Codecov Report uses: codecov/codecov-action@v4 diff --git a/tests/conftest.py b/tests/conftest.py deleted file mode 100644 index bb3fa473..00000000 --- a/tests/conftest.py +++ /dev/null @@ -1,9 +0,0 @@ -import warnings - -try: - from pyparsing.warnings import PyparsingWarning -except ImportError: - pass -else: - # pydot still calls pre-PEP8 pyparsing APIs; pyparsing 3.3+ raises these under PYTHONWARNINGS=error. - warnings.filterwarnings("ignore", category=PyparsingWarning)