Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions docs/requirements-docs.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
sphinx==7.3.7
furo==2024.5.6
sphinx-autobuild==2024.4.16
sphinx==9.1.0
furo==2025.12.19
sphinx-autobuild==2025.8.25
Comment on lines +1 to +3
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

Sphinx 9.1.0 Python version requirements PyPI

💡 Result:

Sphinx 9.1.0 on PyPI specifies Requires-Python: >= 3.12. [1]

Sources:
[1] PyPI – Sphinx 9.1.0 project page (Requires: Python >=3.12) (pypi.org)

Citations:


🌐 Web query:

Sphinx 9.0 breaking changes migration guide

💡 Result:

Sphinx 9.0 (released Nov 30, 2025) — breaking/incompatible changes + migration checklist

  1. Extension API: create_source_parser() signature changed
    If you call SphinxComponentRegistry.create_source_parser() directly, update your call sites: it no longer accepts app and instead takes config and env. Audit any custom builders/parsers/extensions that touch this registry API. [1]

  2. Source file decoding is stricter (encoding issues can now hard-fail)
    Non-decodable bytes in source files now raise an error (older Sphinx replaced them with ? and warned). Fix by ensuring your source files are valid text (and effectively UTF-8 going forward). [1]

  3. sphinx.ext.autodoc was substantially rewritten (edge-case incompatibilities)
    Most projects won’t notice changes, but extensions that interact with autodoc internals may break.
    Mitigation: set autodoc_use_legacy_class_based = True in conf.py to temporarily use the pre-9.0 implementation while you adjust. [1]

  4. Search index content change (may affect search behavior/tests)
    Sphinx no longer includes escaped title content in the search index. If you snapshot-test search output or rely on specific search indexing behavior, re-baseline those expectations. [1]


Deprecations introduced in 9.0 (fix now to avoid future major breaks)

  • Remaining public .app attributes are deprecated (e.g. builder.app, env.app, events.app, SphinxTransform.app). Prefer using the objects’ supported APIs without reaching for .app. [1]
  • Parser API deprecations: Parser.set_application() is deprecated; Parser.config and Parser.env attributes are deprecated. If you maintain a custom parser, update it to the new expectations (and avoid storing/reading config/env via those deprecated attributes). [1]
  • Non-UTF-8 source encodings are deprecated, scheduled for removal in Sphinx 10—standardize on UTF-8. [1]
  • sphinx.io is deprecated and will be removed in Sphinx 10—stop importing/depending on it. [1]

Primary reference: Sphinx 9.0 changelog / incompatible changes & deprecations. [1]
Release index (to navigate 9.0.x point releases): changelog index. [2]

Sources

[1] Sphinx 9.0 changelog (incompatible changes, deprecations): (sphinx-doc.org)
[2] Sphinx changelog index (release navigation): (sphinx-doc.org)

Citations:


🏁 Script executed:

#!/bin/bash
echo "=== Checking Sphinx 9.1.0 Python requirements ==="
curl -s https://pypi.org/pypi/sphinx/9.1.0/json | jq '.info.requires_python'

echo -e "\n=== Checking Sphinx 7.3.7 Python requirements ==="
curl -s https://pypi.org/pypi/sphinx/7.3.7/json | jq '.info.requires_python'

echo -e "\n=== Checking furo 2025.12.19 compatibility ==="
curl -s https://pypi.org/pypi/furo/2025.12.19/json | jq '.info.requires_python'

echo -e "\n=== Checking sphinx-autobuild 2025.8.25 Python requirements ==="
curl -s https://pypi.org/pypi/sphinx-autobuild/2025.8.25/json | jq '.info.requires_python'

Repository: DagsHub/client

Length of output: 305


🌐 Web query:

Sphinx version 8 release skipped why

💡 Result:

Sphinx didn’t skip version 8 (for the Python documentation generator). It was released as:

  • 8.0.0 on July 29, 2024 (then 8.0.1/8.0.2 on July 30, 2024). [1]
  • Follow-up minor releases 8.1.x (Oct 2024) and 8.2.x (Feb–Mar 2025) appear in the official changelog index. [2]

If you’re “not seeing” Sphinx 8, it’s usually because something in your toolchain restricted Sphinx to <8 (common right after release). For example, sphinx-rtd-theme initially required Sphinx < 8, and users had to wait for that ecosystem support to be updated. [3]

Sources:
[1] (sphinx-doc.org)
[2] (sphinx-doc.org)
[3] (github.com)

Citations:


Verify Sphinx 9.1.0 compatibility with breaking changes and confirm codebase uses no affected features.

Sphinx has a major version bump from 7.3.7 to 9.1.0. The Python version requirement increases from >=3.9 to >=3.12, meaning Python 3.9, 3.10, and 3.11 are no longer supported (not just 3.11 as suggested).

More significantly, Sphinx 9.0 introduced breaking changes that require verification:

  • Extension API changes: create_source_parser() signature changed (no longer accepts app)
  • Stricter source file decoding: non-decodable bytes now raise errors instead of warnings
  • Major sphinx.ext.autodoc rewrite with potential incompatibilities (use autodoc_use_legacy_class_based = True as fallback)
  • Search index format changes

Confirm that the DagsHub client documentation setup does not use custom Sphinx extensions, parsers, or rely on autodoc features that would be affected by these changes. Verify sphinx-autobuild==2025.8.25 (requires Python >=3.11) is compatible with the Sphinx upgrade path.

sphinx-copybutton==0.5.2
sphinx-sitemap==2.6.0
sphinx-click==5.0.1
sphinx-autodoc-typehints==2.3.0
sphinx-sitemap==2.9.0
sphinx-click==6.2.0
sphinx-autodoc-typehints==3.6.2
14 changes: 7 additions & 7 deletions requirements-dev.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
setuptools==80.9.0
pytest==8.3.5
setuptools==82.0.0
pytest==9.0.2
Comment on lines +1 to +2
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash

# Check for pkg_resources usage in Python files
echo "=== Checking for pkg_resources usage ==="
rg 'from pkg_resources import|import pkg_resources' --type py --no-heading

# Check Python version requirements
echo -e "\n=== Checking Python version requirements ==="
for file in setup.py setup.cfg pyproject.toml; do
  if [ -f "$file" ]; then
    echo "--- $file ---"
    cat "$file"
    echo ""
  fi
done

# Check for pytest configuration
echo -e "\n=== Checking pytest/tox configuration ==="
for file in pytest.ini tox.ini .pytest.ini; do
  if [ -f "$file" ]; then
    echo "--- $file ---"
    cat "$file"
    echo ""
  fi
done

# Check pyproject.toml for tool.pytest section
if [ -f "pyproject.toml" ]; then
  echo "--- pyproject.toml [tool.pytest] section ---"
  rg '\[tool\.pytest' pyproject.toml -A 10
fi

Repository: DagsHub/client

Length of output: 2621


🌐 Web query:

setuptools 82.0.0 breaking changes pkg_resources removal

💡 Result:

In setuptools 82.0.0 (released 2026-02-08), pkg_resources was removed from setuptools. Any code (yours or a dependency’s) that does import pkg_resources (or uses APIs like resource_filename, entry-point discovery via pkg_resources, namespace-package helpers, etc.) will now fail with ModuleNotFoundError. [1]

What to do:

  • Migrate off pkg_resources to:
    • importlib.resources for package data/resources
    • importlib.metadata for distribution metadata / entry points
    • (and sometimes packaging for requirements/version parsing) [1][2][3]
  • If you can’t migrate immediately, pin to an older setuptools version (i.e., pre-82.0.0) as the setuptools docs note projects relying on pkg_resources should depend on older setuptools. [1]

Sources: setuptools 82.0.0 changelog/history (removal notice) [1], setuptools pkg_resources documentation (deprecation guidance and replacements) [2], upstream tracking issue for obviating/removing pkg_resources [3].


🌐 Web query:

pytest 9.0.2 breaking changes Python version compatibility

💡 Result:

pytest 9.0.2 breaking changes

  • No intentional breaking changes: pytest 9.0.2 is a bug-fix release and intended to be a “drop-in replacement”. [1]
  • Notable behavior/compat notes in 9.0.2:
    • The terminalprogress feature is disabled by default (except on Windows) due to terminal compatibility issues; you can re-enable with -p terminalprogress. [2]
    • A compatibility shim was added to restore the (previously broken in 9.0.0) private attribute config.inicfg; it’s planned to be deprecated in 9.1 and removed in 10.0. [2]

Python version compatibility (pytest 9.0.2)

  • The breaking Python-version change is in pytest 9.0.0: Python 3.9 support was dropped, so pytest 9.0.2 requires Python ≥ 3.10. [2]
  • Context from pytest docs: earlier lines show 8.4+ requires Python 3.9+ and 8.0+ requires Python 3.8+. [3]

Sources: [1] pytest 9.0.2 release announcement, [2] pytest changelog (9.0.2 / 9.0.0 entries), [3] pytest Backwards Compatibility Policy (Python version support table.


Address Python 3.9 compatibility issue with pytest 9.0.2.

setuptools 82.0.0 removes pkg_resources, but the codebase doesn't use it, so there's no impact. However, pytest 9.0.2 requires Python ≥ 3.10, while the project declares support for Python ≥ 3.9 in setup.py. This creates a compatibility gap for developers using Python 3.9. Either:

  • Pin pytest to a version supporting Python 3.9 (e.g., pytest<9), or
  • Update python_requires to enforce Python ≥ 3.10 for development

respx==0.22.0
pytest-git==1.8.0
pytest-env==1.1.5
pytest-mock==3.14.0
fiftyone==1.5.2
datasets==3.6.0
ultralytics==8.3.237
pytest-env==1.2.0
pytest-mock==3.15.1
fiftyone==1.12.0
datasets==4.5.0
ultralytics==8.4.13
Loading