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
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

🏁 Script executed:

#!/bin/bash
# Search for Python version pins in CI/config files
echo "=== Checking for Python 3.11 in CI/config files ==="
rg -n "python.*3\.11|3\.11.*python" --type=yaml --type=toml -i || echo "No matches found"

echo -e "\n=== Checking for Python version in any CI config ==="
rg -n "python" --type=yaml | head -20 || echo "No matches found"

Repository: DagsHub/client

Length of output: 180


🏁 Script executed:

#!/bin/bash
# Find conf.py and check for autodoc usage
echo "=== Finding conf.py files ==="
fd "conf.py" --type=f

echo -e "\n=== Checking conf.py for autodoc and extensions ==="
fd "conf.py" --type=f --exec grep -n "autodoc\|extensions\|python_requires" {} +

Repository: DagsHub/client

Length of output: 540


🏁 Script executed:

#!/bin/bash
# Check for setup.py, setup.cfg, or pyproject.toml that might specify Python requirements
echo "=== Checking Python version requirements in project files ==="
fd "setup.py|setup.cfg|pyproject.toml" --type=f --exec grep -n "python_requires\|Programming Language" {} +

Repository: DagsHub/client

Length of output: 310


🏁 Script executed:

cat -n docs/source/conf.py

Repository: DagsHub/client

Length of output: 3149


🌐 Web query:

Sphinx 9.1.0 release notes Python 3.11 support breaking changes

💡 Result:

Sphinx 9.1.0 was released Dec 31, 2025 [1].

Python 3.11 support

  • Python 3.11 is not supported in Sphinx 9.1.0—it was explicitly dropped [1].
  • PyPI metadata for Sphinx 9.1.0 shows Requires: Python >= 3.12 (so you need Python 3.12+) [2].

Breaking changes / compatibility-impacting changes (9.1.0)

  • Dropped Python 3.11 support [1].
  • Dropped Docutils 0.20 support (you must use a newer Docutils) [1].

Sources: Sphinx changelog (9.1.0) [1], PyPI project metadata [2].


🌐 Web query:

Sphinx 9.0 autodoc breaking changes autodoc_default_flags deprecated

💡 Result:

Sphinx 9.0 autodoc breaking / incompatible changes

  • sphinx.ext.autodoc was “substantially rewritten” in Sphinx 9.0.0 (released Nov 30, 2025), and Sphinx explicitly warns there may be incompatible changes in edge cases, especially for extensions that interact with autodoc internals. To mitigate this, Sphinx 9 adds autodoc_use_legacy_class_based to switch back to the pre-9.0 implementation. [1]
  • In Sphinx 9.0.1 (released Dec 1, 2025), autodoc “options objects” had compatibility churn: Sphinx restored a mapping interface, but also deprecated that mapping interface. If you have extensions that treat autodoc options like a dict, expect deprecation warnings / needed updates. [1]

autodoc_default_flags deprecation (what to do now)

  • autodoc_default_flags has been deprecated since Sphinx 1.8.0b1 (i.e., this is not new to 9.0). [2]
  • The replacement is autodoc_default_options, a dict applied to all autodoc directives; None or True means “flag enabled”. [3]

Typical migration:

# old (deprecated for years)
autodoc_default_flags = ['members', 'undoc-members', 'show-inheritance']

# new
autodoc_default_options = {
    'members': None,
    'undoc-members': True,
    'show-inheritance': True,
}

[2][3]

Sources: Sphinx 9.0 changelog [1], Sphinx 1.8 changelog (deprecates autodoc_default_flags) [2], current autodoc config docs (autodoc_default_options) [3].


Update autodoc_default_flags to autodoc_default_options and test autodoc compatibility

Sphinx 9.1.0 (released Dec 31, 2025) involves significant changes to sphinx.ext.autodoc:

  • The autodoc extension was substantially rewritten in Sphinx 9.0, with possible edge-case incompatibilities, especially for extensions that interact with autodoc internals.
  • Your conf.py uses the deprecated autodoc_default_flags = ["inherited-members"] (line 68), which has been deprecated since Sphinx 1.8.0b1. This must be migrated to autodoc_default_options:
Migration example
# Replace this (docs/source/conf.py:68)
autodoc_default_flags = ["inherited-members"]

# With this
autodoc_default_options = {
    "inherited-members": None,
}

After the upgrade, test autodoc output carefully, especially with sphinx_autodoc_typehints (line 29), which may require compatibility adjustments for the rewritten autodoc internals. Use autodoc_use_legacy_class_based = True if you encounter autodoc behavior changes that break documentation generation.

furo==2025.12.19
sphinx-autobuild==2025.8.25
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.3
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
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 direct pkg_resources usage in Python source files
rg "import pkg_resources|from pkg_resources" --type=py -n

# Also check for pkg_resources in setup.py or setup.cfg
fd -e "setup.py" -o -e "setup.cfg" -o -e "pyproject.toml" | while read f; do
  if [ -f "$f" ]; then
    echo "=== $f ==="
    grep -n "pkg_resources" "$f" 2>/dev/null || echo "No pkg_resources found"
  fi
done

# Check for any egg_info or dist-info references that might implicitly use pkg_resources
rg "egg.info|dist.info" --type=py -n | head -20

Repository: DagsHub/client

Length of output: 174


🏁 Script executed:

#!/bin/bash
# Check for direct pkg_resources usage in Python source files
echo "=== Searching for pkg_resources imports ==="
rg "import pkg_resources|from pkg_resources" --type=py -n

echo -e "\n=== Checking setup.py files ==="
find . -name "setup.py" -type f | head -20 | xargs grep -n "pkg_resources" 2>/dev/null || echo "No pkg_resources in setup.py files"

echo -e "\n=== Checking setup.cfg files ==="
find . -name "setup.cfg" -type f | head -20 | xargs grep -n "pkg_resources" 2>/dev/null || echo "No pkg_resources in setup.cfg files"

echo -e "\n=== Checking pyproject.toml files ==="
find . -name "pyproject.toml" -type f | head -20 | xargs grep -n "pkg_resources" 2>/dev/null || echo "No pkg_resources in pyproject.toml files"

echo -e "\n=== Checking requirements files ==="
find . -name "requirements*.txt" -type f | xargs grep -n "pkg_resources" 2>/dev/null || echo "No pkg_resources in requirements files"

echo -e "\n=== Repository structure (to understand project) ==="
ls -la

Repository: DagsHub/client

Length of output: 1752


🏁 Script executed:

#!/bin/bash
# Read setup.py to check dependencies
echo "=== setup.py content ==="
cat setup.py

echo -e "\n=== pyproject.toml content ==="
cat pyproject.toml

echo -e "\n=== requirements-dev.txt content ==="
cat requirements-dev.txt

Repository: DagsHub/client

Length of output: 2539


setuptools==82.0.0 removes pkg_resources — verify dev environment compatibility

While setuptools==82.0.0 removed pkg_resources, this project does not directly depend on it. The codebase has no pkg_resources imports, and production dependencies (install_requires in setup.py) do not use it. However, the dev dependencies — fiftyone==1.13.2, datasets==4.5.0, and ultralytics==8.4.14 — may require pkg_resources internally. Verify these dev packages are compatible with setuptools 82.0.0, or consider pinning to an earlier setuptools version for development.

pytest==9.0.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 | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Search for deprecated pytest patterns that would break in pytest 9.0.2

echo "=== Searching for py.path.local usage ==="
rg -n "py\.path|py_path|\.local\(" --type=py -C2 2>/dev/null | head -50

echo -e "\n=== Searching for yield_fixture ==="
rg -n "yield_fixture" --type=py -C2 2>/dev/null

echo -e "\n=== Searching for deprecated hook parameters ==="
rg -n "pytest_ignore_collect|pytest_collect_file|pytest_pycollect_makemodule|pytest_report_header|pytest_report_collectionfinish" --type=py -C3 2>/dev/null | head -50

echo -e "\n=== Checking for conftest.py files ==="
find . -name "conftest.py" -type f 2>/dev/null

echo -e "\n=== Checking Python version requirements ==="
if [ -f "setup.py" ]; then
  echo "=== setup.py ===" && cat setup.py | head -30
fi
if [ -f "pyproject.toml" ]; then
  echo "=== pyproject.toml ===" && cat pyproject.toml | head -50
fi
if [ -f "setup.cfg" ]; then
  echo "=== setup.cfg ===" && cat setup.cfg | head -30
fi

Repository: DagsHub/client

Length of output: 1363


🏁 Script executed:

#!/bin/bash
# Get complete Python version requirements
echo "=== Full setup.py python_requires ===" 
grep -A 50 "python_requires\|setup(" setup.py | head -60

echo -e "\n=== Full pyproject.toml ===" 
cat pyproject.toml 2>/dev/null | head -100

echo -e "\n=== Content of conftest.py files ===" 
for f in ./tests/data_engine/conftest.py ./tests/dda/conftest.py ./tests/dda/filesystem/conftest.py ./tests/dda/upload/conftest.py ./tests/model_loading/conftest.py; do
  if [ -f "$f" ]; then
    echo "--- $f ---"
    wc -l "$f"
    cat -n "$f" | head -50
  fi
done

echo -e "\n=== Check for any pytest imports/configs ===" 
rg -n "import pytest|from pytest|@pytest" --type=py --max-count=20

Repository: DagsHub/client

Length of output: 14395


🏁 Script executed:

#!/bin/bash
# Verify Python 3.9 compatibility issue with pytest 9.0.2
echo "=== Checking pytest 9.0.2 Python requirements ==="
rg -n "python" requirements-dev.txt -i

echo -e "\n=== Checking if Python 3.9 is explicitly tested in CI ==="
find . -name "*.yml" -o -name "*.yaml" | xargs grep -l "python\|pytest" 2>/dev/null | head -5

if [ -f ".github/workflows/test.yml" ] || [ -f ".github/workflows/tests.yml" ]; then
  echo "=== GitHub Actions test workflow ===" 
  cat .github/workflows/test.yml 2>/dev/null || cat .github/workflows/tests.yml 2>/dev/null | head -50
fi

echo -e "\n=== Check tox.ini or similar test configuration ==="
find . -name "tox.ini" -o -name "pytest.ini" -o -name "setup.cfg" | xargs cat 2>/dev/null | head -50

Repository: DagsHub/client

Length of output: 507


🏁 Script executed:

#!/bin/bash
# Check CI/CD workflow to see Python versions being tested
echo "=== GitHub Actions python-package.yml ===" 
cat .github/workflows/python-package.yml

echo -e "\n=== Checking all pytest version references ===" 
rg "pytest" requirements*.txt

Repository: DagsHub/client

Length of output: 1569


pytest==9.0.2 requires Python 3.10+ but the project supports Python 3.9 — CI tests will fail

The upgrade to pytest 9.0.2 breaks the project's Python 3.9 support: pytest 9.0 dropped Python 3.9 support, requiring Python 3.10 or later. Your CI workflow currently tests against Python 3.9, 3.10, 3.11, 3.12, and 3.13, and the package's setup.py specifies python_requires=">=3.9". This version constraint conflict will cause test failures on Python 3.9.

Options:

  • Update python_requires in setup.py to ">=3.10" if dropping Python 3.9 support is acceptable
  • Pin pytest to 8.3.x if Python 3.9 support must be maintained

Additional breaking changes in pytest 9.0 (for reference): PytestRemovedIn9Warning deprecations are now errors, CI environment detection now requires non-empty $CI or $BUILD_NUMBER variables, and overlapping test path arguments are now deduplicated.

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.5.0
pytest-mock==3.15.1
fiftyone==1.13.2
datasets==4.5.0
ultralytics==8.4.14
Loading