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
2 changes: 1 addition & 1 deletion docs/requirements-docs.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ sphinx-autobuild==2025.8.25
sphinx-copybutton==0.5.2
sphinx-sitemap==2.9.0
sphinx-click==6.2.0
sphinx-autodoc-typehints==3.9.9
sphinx-autodoc-typehints==3.11.0

Copy link
Copy Markdown

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
# Description: Verify that the docs build succeeds with sphinx-autodoc-typehints 3.11.0.

# Test: Check for sphinx configuration that might be affected by the version upgrade.
echo "=== Checking sphinx_autodoc_typehints configuration in conf.py ==="
rg -nP -A 5 'sphinx_autodoc_typehints' docs/source/conf.py || echo "No explicit configuration found."

# Check for any TODO/FIXME comments related to type hints in docs
echo "=== Checking for type hints-related TODOs in docs ==="
rg -nP --type=py 'TODO.*type|FIXME.*type' docs/ || echo "No type-related TODOs found."

Repository: DagsHub/client

Length of output: 316


🏁 Script executed:

# Check for CI/build configuration files that might test docs builds
fd -e yml -e yaml -e toml -e cfg -e ini | head -20

Repository: DagsHub/client

Length of output: 164


🏁 Script executed:

# Look for any Makefile or build scripts related to docs
fd -name "Makefile*" -o -name "*build*" -o -name "tox.ini" | grep -E "(Makefile|build|tox)"

Repository: DagsHub/client

Length of output: 289


🏁 Script executed:

# Check if there's any configuration related to sphinx or docs in pyproject.toml or setup.cfg
fd -name "pyproject.toml" -o -name "setup.cfg" -o -name "setup.py" | xargs cat 2>/dev/null | head -100

Repository: DagsHub/client

Length of output: 289


🏁 Script executed:

# Read pyproject.toml to check build configuration and dependencies
cat pyproject.toml | head -150

Repository: DagsHub/client

Length of output: 89


🏁 Script executed:

# Look for GitHub Actions or CI configuration
find . -path "*/.github/workflows" -name "*.yml" -o -name "*.yaml" 2>/dev/null | head -10

Repository: DagsHub/client

Length of output: 167


🏁 Script executed:

# Check if there's a docs build command or script
fd -type f -name "*.sh" | grep -i doc

Repository: DagsHub/client

Length of output: 229


🏁 Script executed:

# Check current requirements files to see version context
ls -la docs/ | grep -i req

Repository: DagsHub/client

Length of output: 130


🏁 Script executed:

# Read the full pyproject.toml
cat pyproject.toml

Repository: DagsHub/client

Length of output: 89


🏁 Script executed:

# Read the requirements-docs.txt file to see current dependencies
cat docs/requirements-docs.txt

Repository: DagsHub/client

Length of output: 217


🏁 Script executed:

# Check the CI workflow for docs-related jobs
cat .github/workflows/run-linters.yaml

Repository: DagsHub/client

Length of output: 840


🏁 Script executed:

# Check if there's a Makefile in docs directory
cat docs/Makefile 2>/dev/null || echo "No Makefile found"

Repository: DagsHub/client

Length of output: 853


🏁 Script executed:

# Check git history to see if this line was recently changed
git log -p --all -- docs/requirements-docs.txt | head -100

Repository: DagsHub/client

Length of output: 40


🏁 Script executed:

# Search for any issues or notes about sphinx-autodoc-typehints in the codebase
rg -i "sphinx-autodoc-typehints|sphinx_autodoc" --type py docs/source/conf.py -A 10 -B 2

Repository: DagsHub/client

Length of output: 379


🏁 Script executed:

# Check if there are any version-specific configurations in sphinx config
cat docs/source/conf.py

Repository: DagsHub/client

Length of output: 2897


🏁 Script executed:

# Check when sphinx-autodoc-typehints version was last changed
git log --all --oneline -- docs/requirements-docs.txt | head -20

Repository: DagsHub/client

Length of output: 979


🏁 Script executed:

# Look for any recent changes to the version or related comments
git show HEAD:docs/requirements-docs.txt 2>/dev/null || echo "File not in HEAD"

Repository: DagsHub/client

Length of output: 217


🏁 Script executed:

# Check the specific commit that added/updated sphinx-autodoc-typehints
git log -p --all -S "sphinx-autodoc-typehints" -- docs/requirements-docs.txt | head -50

Repository: DagsHub/client

Length of output: 40


🏁 Script executed:

# Look at the "Upgrade doc package versions" commit details
git show e30a34b --stat

Repository: DagsHub/client

Length of output: 413


🏁 Script executed:

# Show the full diff of the upgrade commit
git show e30a34b

Repository: DagsHub/client

Length of output: 2150


🏁 Script executed:

# Check if there's a more recent change to sphinx-autodoc-typehints than e30a34b
git log --all --format="%H %s" -- docs/requirements-docs.txt | head -5

Repository: DagsHub/client

Length of output: 479


🏁 Script executed:

# See what the requirements file looked like in the most recent commit
git diff HEAD~1 HEAD -- docs/requirements-docs.txt 2>/dev/null || echo "No changes in recent commit"

Repository: DagsHub/client

Length of output: 86


🏁 Script executed:

# Check if the file was modified but not committed
git status docs/requirements-docs.txt

Repository: DagsHub/client

Length of output: 124


🏁 Script executed:

# Check all commits between e30a34b and HEAD to find when 3.11.0 was introduced
git log e30a34b..HEAD --all --oneline -- docs/requirements-docs.txt

Repository: DagsHub/client

Length of output: 108


🏁 Script executed:

# Show the current HEAD to see its relation to the commits
git log -1 --oneline

Repository: DagsHub/client

Length of output: 108


🏁 Script executed:

# Check if there's a way to find the commit that changed 3.9.9 to 3.11.0
git log -p --all -- docs/requirements-docs.txt | grep -A 2 -B 2 "3.11.0" | head -20

Repository: DagsHub/client

Length of output: 40


Test the documentation build with sphinx-autodoc-typehints 3.11.0 before merge.

The version bump from 3.9.9 to 3.11.0 is minor, but the provided verification script only checks configuration and TODOsβ€”it doesn't test the actual documentation build. The project has minimal sphinx_autodoc_typehints configuration (typehints_use_signature_return = True only), which reduces risk. However, the CI workflow currently does not run documentation builds, so compatibility should be validated locally by running make -C docs clean html or make -C docs serve to ensure no regressions in type hint rendering.

16 changes: 8 additions & 8 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
respx==0.22.0
setuptools==82.0.1
pytest==9.1.1

Copy link
Copy Markdown

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
# Description: Search for deprecated pytest patterns and APIs that may need updates.

echo "=== Checking for pytest.approx without kwargs argument (deprecated pattern) ==="
rg -nP --type=py 'pytest\.approx\s*\(\s*\)' || echo "No empty approx() calls found."

echo "=== Checking for pytest.warns() with class argument (potentially changed) ==="
rg -nP --type=py 'pytest\.warns\s*\(' | head -20 || echo "No warns() usage found."

echo "=== Checking for indirect parametrization patterns ==="
rg -nP --type=py '`@pytest`\.mark\.parametrize.*indirect' | head -10 || echo "No indirect parametrization found."

Repository: DagsHub/client

Length of output: 302


🏁 Script executed:

cat -n requirements-dev.txt | head -10

Repository: DagsHub/client

Length of output: 277


🏁 Script executed:

# Check for test files and their pytest usage patterns
fd -e py "test_" -o -e py "*_test.py" | head -5

Repository: DagsHub/client

Length of output: 175


🏁 Script executed:

# Search for pytest fixture definitions and usage
rg -nP --type=py 'pytest\.fixture|`@fixture`' | head -20

Repository: DagsHub/client

Length of output: 1126


🏁 Script executed:

# Check for deprecated pytest.deprecated_call usage
rg -nP --type=py 'pytest\.deprecated_call|assert.*deprecated|DeprecationWarning' | head -20

Repository: DagsHub/client

Length of output: 40


🏁 Script executed:

# Search for test files in the repository
find . -path ./node_modules -prune -o -name "test_*.py" -type f -print | head -20

Repository: DagsHub/client

Length of output: 961


🏁 Script executed:

# Search for pytest.mark.parametrize usage to check for patterns that may have changed
rg -nP --type=py '`@pytest`\.mark\.parametrize' | head -20

Repository: DagsHub/client

Length of output: 1625


🌐 Web query:

pytest 9.1.1 vs pytest 8.3.5 breaking changes major version compatibility

πŸ’‘ Result:

Moving from pytest 8.3.5 to 9.1.1 involves significant breaking changes because the transition crosses a major version boundary (from 8.x to 9.x) [1][2]. Key Breaking Changes and Compatibility Considerations: 1. Major Deprecation Policy: Pytest 9.0 introduced breaking changes and completed the removal of features that had been deprecated in earlier versions [3][4]. Most notably, warnings of type PytestRemovedIn9Warning, which were previously just warnings in the 8.x series, became errors by default in 9.0 [5][3]. This was intended to force the removal of legacy features before the 9.1 release [3]. 2. Feature Removals (9.0 and 9.1): - Pytest 9.0 removed support for several items, including: - Synchronous tests depending on async fixtures [4]. - Applying a mark to a fixture function [4]. - Using py.path.local arguments for hooks (replaced with pathlib.Path) [4]. - Pytest 9.1 further removed: - pytest.importorskip default behavior: It now only captures ModuleNotFoundError by default (previously it captured all ImportError) [4]. - The fspath argument for Node constructors (replaced with pathlib.Path) [4]. 3. Behavioral Changes: - Test Invocation: Pytest 9.0 introduced changes to how overlapping arguments and duplicates are handled in CLI invocations (e.g., pytest a/ a/b now treats the arguments differently than before) [5][3]. - CI Detection: The environment variable detection for CI/CD modes was tightened; now, variables like $CI or $BUILD_NUMBER must be set to a non-empty value to activate CI mode [5][3]. - Python Version: Pytest 9.x requires Python 3.10 or newer [6][7]. Recommendation: Because you are skipping multiple minor releases and moving across a major version, you should review the full Deprecations and Removals section of the official pytest documentation [4]. It is highly recommended to run your test suite against pytest 8.4 or the latest 8.x version first to resolve any remaining deprecation warnings before upgrading to 9.1.1, as these will likely manifest as hard errors in the 9.x series [5][3].

Citations:


Run full test suite with pytest 9.1.1 to verify compatibilityβ€”major version bump includes breaking changes.

Pytest 9.1.1 is a major version bump from 8.3.5 with documented breaking changes including removal of async fixture support, py.path.local→pathlib.Path conversions, and importorskip behavior changes. Scanning the codebase found no obvious deprecated API patterns (e.g., empty approx() calls, pytest.warns usage, or deprecated fixture marks). However, a full test run is needed to confirm the test suite executes without errors under pytest 9.1.1.

respx==0.23.1
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.6.0
pytest-mock==3.15.1
fiftyone==1.17.0
datasets==5.0.0
Comment on lines +7 to +8

Copy link
Copy Markdown

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
# Description: Search for fiftyone and datasets imports and usage.

echo "=== Searching for fiftyone imports ==="
rg -nP --type=py 'import fiftyone|from fiftyone' || echo "No fiftyone imports found."

echo "=== Searching for datasets imports ==="
rg -nP --type=py 'import datasets|from datasets' || echo "No datasets imports found."

echo "=== Checking for API-level usage patterns ==="
rg -nP --type=py 'fiftyone\.|datasets\.' | head -30 || echo "No API usage patterns found."

Repository: DagsHub/client

Length of output: 2536


🏁 Script executed:

# Check the current requirements-dev.txt and historical context
head -20 requirements-dev.txt

Repository: DagsHub/client

Length of output: 214


🏁 Script executed:

# Inspect actual API usage in the main files using fiftyone
head -80 dagshub/data_engine/annotation/voxel_conversion.py

Repository: DagsHub/client

Length of output: 2795


🏁 Script executed:

# Check query_result.py for fiftyone and datasets usage
sed -n '60,100p' dagshub/data_engine/model/query_result.py

Repository: DagsHub/client

Length of output: 987


🌐 Web query:

fiftyone 1.17.0 breaking changes release notes

πŸ’‘ Result:

FiftyOne 1.17.0, released on June 8, 2026, introduces a primary breaking change regarding Python support [1][2]. Key Breaking Change: * Python 3.9 Support Removed: FiftyOne now requires Python 3.10 or later [1][2][3]. This change was the reason the release was elevated from a patch (1.16.1) to a minor version (1.17.0) [2][4]. Other Significant Changes and Fixes: * CORS Policy Update: The FiftyOne App server's CORS policy has been updated. The previous default, which used a permissive wildcard (Access-Control-Allow-Origin: *), has been removed in favor of a same-origin policy by default [1][5]. Cross-origin access is now opt-in via the FIFTYONE_ALLOWED_ORIGINS environment variable [5]. * Security Dependency Updates: Multiple dependencies were updated to resolve security vulnerabilities, including Pillow (>=12.2), strawberry-graphql (>=0.312.3), minimatch (9.0.7), protobufjs (>=7.6), and brace-expansion (>=5.0.6) [1][2]. * Bug Fixes: The release includes various fixes, such as resolving loading-screen flickering issues in the modal and 3D viewer rendering problems for grouped datasets [1]. * Performance Improvements: Improvements were made to image and mask decoding performance [1].

Citations:


🌐 Web query:

huggingface datasets 5.0.0 breaking changes migration

πŸ’‘ Result:

The release of huggingface/datasets version 5.0.0 (June 5, 2026) introduced one primary breaking change related to shuffling in streaming mode [1][2]. Breaking Change: Shuffling Mechanism The default shuffling mechanism for IterableDataset has been updated to use multiple input shards for the shuffle buffer [1][3]. Previously, shuffling typically operated on a single stream or shard basis; this change improves randomness and performance for streaming datasets. Migration: If you require the previous shuffling behavior, you must explicitly update your code to pass max_buffer_input_shards=1 to the IterableDataset.shuffle method [1][4]. Example: # Previous behavior (Default in < 5.0.0) dataset = dataset.shuffle(...) # Current behavior (Default in 5.0.0) dataset = dataset.shuffle(...) # Uses multiple input shards # To restore the old mechanism in 5.0.0+: dataset = dataset.shuffle(max_buffer_input_shards=1,...) Compatibility Notes: The library continues to support ds.state_dict and ds.load_state_dict for this new, improved shuffling mechanism, which also enables better dataset checkpointing [1][2]. Users should ensure their existing workflows do not rely on the specific (non-multi-shard) output order of the previous implementation unless they apply the migration fix mentioned above [1][3].

Citations:


🏁 Script executed:

# Check if datasets.shuffle is used anywhere in the codebase
rg -nP --type=py 'hf_ds\..*shuffle|datasets\..*shuffle|\.shuffle\(' | grep -E '(hf_ds|datasets)'

Repository: DagsHub/client

Length of output: 40


🏁 Script executed:

# Check Python version requirement in the project
fd -e 'setup.py' -e 'setup.cfg' -e 'pyproject.toml' -e '.python-version' | head -5

Repository: DagsHub/client

Length of output: 40


🏁 Script executed:

# Read pyproject.toml or setup.py to check Python version requirement
cat pyproject.toml 2>/dev/null | grep -A 5 'python' || cat setup.py 2>/dev/null | grep -i 'python_requires' || echo "Could not find version constraint"

Repository: DagsHub/client

Length of output: 87


FiftyOne 1.17.0 requires Python 3.10+, but the project supports Python 3.9+.

The fiftyone upgrade introduces a breaking change: Python 3.9 support was removed and now requires Python 3.10 or later. This conflicts with the project's python_requires=">=3.9" constraint. Either upgrade the project's minimum Python version to 3.10+ or pin fiftyone to a version compatible with Python 3.9.

The datasets 5.0.0 upgrade (primary change: IterableDataset shuffle mechanism) does not affect this codebase, as no shuffle calls were found in the active code.

ultralytics==8.4.75
Loading