devrev-Python-SDK 2.10.0__tar.gz → 2.10.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/workflows/ci.yml +1 -1
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/workflows/deploy.yml +1 -1
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/workflows/release.yml +2 -2
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/PKG-INFO +1 -1
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/changelog.md +15 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/pyproject.toml +1 -1
- devrev_python_sdk-2.10.1/scripts/debug_articles.py +200 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/articles.py +12 -7
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_articles.py +27 -2
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/uv.lock +32 -4
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/agents/bug-fixer.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/agents/builder.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/agents/documentation.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/agents/foreman.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/agents/pr-review-boss.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/agents/release-manager.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/agents/simplifier.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/agents/tester.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/commands/foreman-work.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/commands/release-prepare.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/commands/review-start.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/commands/simplify-code.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/rules/code-quality.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/rules/data-modeling.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/rules/devrev-sdk.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/rules/git-workflow.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/rules/pull-requests.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/rules/python-development.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/rules/security.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/rules/testing.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.dockerignore +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.env.sample +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/ISSUE_TEMPLATE/article-artifact-simplification.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/ISSUE_TEMPLATE/question.yml +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/dependabot.yml +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/pull_request_template.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/workflows/api-check.yml +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/workflows/claude-code-review.yml +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/workflows/claude.yml +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/workflows/docs.yml +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/workflows/integration-tests.yml +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/workflows/sync-openapi.yml +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.gitignore +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.pre-commit-config.yaml +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/CLAUDE.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/CODE_OF_CONDUCT.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/CONTRIBUTING.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/DEPRECATIONS.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/Dockerfile +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/KNOWN_ISSUES.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/OPENAPI_SPEC_DISCREPANCIES.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/README.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/SECURITY.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/augment-mcp-config-remote.json +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/augment-mcp-config.json +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/augment-settings.json +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/benchmarks/README.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/benchmarks/bench_http_client.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/benchmarks/bench_models.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/benchmarks/bench_pagination.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/benchmarks/conftest.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/context7.json +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/deploy/README.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/deploy/audit-logging-setup.sh +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/deploy/cloudbuild.yaml +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/deploy/monitoring/README.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/deploy/monitoring/alert-policies.yaml +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/deploy/monitoring/dashboard.json +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/deploy/monitoring/validate-config.sh +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/deploy/service.yaml +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docker-compose.yml +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/beta/brands.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/beta/engagements.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/beta/incidents.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/beta/index.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/beta/question-answers.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/beta/recommendations.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/beta/search.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/beta/uoms.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/beta-api-differences.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/client.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/config.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/exceptions.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/index.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/models/accounts.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/models/base.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/models/index.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/models/users.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/models/works.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/accounts.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/articles.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/code-changes.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/conversations.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/dev-users.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/groups.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/index.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/links.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/parts.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/rev-users.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/slas.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/tags.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/timeline-entries.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/webhooks.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/works.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/examples/advanced.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/examples/basic.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/examples/beta-features.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/examples/index.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/examples/integrations.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/getting-started/authentication.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/getting-started/index.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/getting-started/installation.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/getting-started/quickstart.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/beta-api.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/compatibility.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/configuration.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/error-handling.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/github-actions-setup.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/index.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/logging.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/pagination.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/sync-vs-async.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/testing.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/version-support.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/write-integration-testing-strategy.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/hooks/copy_llms.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/index.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/mcp/deployment.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/mcp/index.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/mcp/quickstart.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/mcp/tools-reference.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/stylesheets/extra.css +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/README.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/basic/README.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/basic/async_example.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/basic/create_work.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/basic/error_handling.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/basic/list_accounts.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/basic/pagination.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/basic/search_users.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/integrations/cloud_functions/README.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/integrations/cloud_functions/main.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/integrations/cloud_functions/requirements.txt +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/integrations/fastapi/README.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/integrations/fastapi/main.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/integrations/fastapi/requirements.txt +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/integrations/flask/README.md +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/integrations/flask/app.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/integrations/flask/requirements.txt +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/llms-ctx-full.txt +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/llms-ctx.txt +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/llms-mcp.txt +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/llms.txt +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/mkdocs.yml +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/openapi-beta.yaml +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/openapi-public.yaml +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/openapi-spec-corrections.yaml +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/scripts/build_ai_docs.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/scripts/setup-github-secrets.sh +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/__init__.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/client.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/config.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/exceptions.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/__init__.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/accounts.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/articles.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/artifacts.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/base.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/brands.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/code_changes.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/conversations.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/dev_users.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/engagements.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/groups.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/incidents.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/links.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/notifications.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/parts.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/preferences.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/question_answers.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/recommendations.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/rev_users.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/search.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/slas.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/sync.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/tags.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/tasks.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/timeline_entries.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/timeline_events.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/track_events.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/uoms.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/webhooks.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/widgets.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/works.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/py.typed +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/__init__.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/accounts.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/articles.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/artifacts.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/base.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/brands.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/code_changes.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/conversations.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/dev_users.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/engagements.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/groups.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/incidents.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/links.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/notifications.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/parts.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/preferences.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/question_answers.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/recommendations.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/rev_users.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/search.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/slas.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/tags.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/timeline_entries.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/track_events.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/uoms.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/webhooks.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/works.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/utils/__init__.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/utils/content_converter.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/utils/deprecation.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/utils/http.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/utils/logging.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/utils/pagination.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/__init__.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/__main__.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/config.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/middleware/__init__.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/middleware/audit.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/middleware/auth.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/middleware/health.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/middleware/rate_limit.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/prompts/__init__.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/prompts/escalation.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/prompts/investigate.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/prompts/response.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/prompts/summarize.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/prompts/triage.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/resources/__init__.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/resources/account.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/resources/article.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/resources/conversation.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/resources/part.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/resources/server_info.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/resources/ticket.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/resources/user.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/server.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/__init__.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/accounts.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/conversations.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/engagements.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/groups.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/incidents.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/links.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/parts.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/recommendations.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/search.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/server_info.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/slas.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/tags.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/timeline.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/users.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/works.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/utils/__init__.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/utils/errors.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/utils/formatting.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/utils/pagination.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/__init__.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/conftest.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/__init__.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/conftest.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_accounts_e2e.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_all_readonly_endpoints.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_articles_lifecycle.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_backwards_compatibility.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_contacts_e2e.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_core_services_phase1.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_extended_services_phase2.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_get_endpoints.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_issues_e2e.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_kb_articles_e2e.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_mcp_articles.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_ping.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_question_answers_e2e.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_readonly_endpoints.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_specialized_services_phase3.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_tickets_e2e.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_write_operations.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/utils/__init__.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/utils/cleanup.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/utils/constants.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/utils/data_manager.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/performance/__init__.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/performance/test_articles_performance.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/__init__.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/__init__.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/conftest.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_audit.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_config.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_phase4_transport.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_prompts.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_resources.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_server_info.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_accounts.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_conversations.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_engagements.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_groups.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_incidents.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_links.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_parts.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_recommendations.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_search.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_slas.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_tags.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_timeline.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_users.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_works.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_utils.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/models/__init__.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/models/test_user_state_regression.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/__init__.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/conftest.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_articles.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_async_services.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_brands.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_code_changes.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_conversations.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_engagements.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_groups.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_incidents.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_links.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_notifications.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_parts.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_preferences.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_question_answers.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_recommendations.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_search.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_slas.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_tags.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_timeline_entries.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_track_events.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_uoms.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_webhooks.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_works.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_articles_unified.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_artifacts.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_backward_compatibility.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_base_service.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_client.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_config.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_content_converter.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_deprecation.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_error_handling.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_exceptions.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_http.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_logging.py +0 -0
- {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_pagination.py +0 -0
|
@@ -42,7 +42,7 @@ jobs:
|
|
|
42
42
|
echo "Deploying version: $VERSION"
|
|
43
43
|
|
|
44
44
|
- name: Authenticate to Google Cloud (WIF)
|
|
45
|
-
uses: google-github-actions/auth@
|
|
45
|
+
uses: google-github-actions/auth@v3
|
|
46
46
|
with:
|
|
47
47
|
workload_identity_provider: ${{ secrets.WIF_PROVIDER }}
|
|
48
48
|
service_account: ${{ secrets.WIF_SERVICE_ACCOUNT }}
|
|
@@ -93,7 +93,7 @@ jobs:
|
|
|
93
93
|
url: https://pypi.org/project/py-devrev/
|
|
94
94
|
steps:
|
|
95
95
|
- name: Download artifacts
|
|
96
|
-
uses: actions/download-artifact@
|
|
96
|
+
uses: actions/download-artifact@v8
|
|
97
97
|
with:
|
|
98
98
|
name: dist
|
|
99
99
|
path: dist/
|
|
@@ -115,7 +115,7 @@ jobs:
|
|
|
115
115
|
fetch-depth: 0
|
|
116
116
|
|
|
117
117
|
- name: Download artifacts
|
|
118
|
-
uses: actions/download-artifact@
|
|
118
|
+
uses: actions/download-artifact@v8
|
|
119
119
|
with:
|
|
120
120
|
name: dist
|
|
121
121
|
path: dist/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devrev-Python-SDK
|
|
3
|
-
Version: 2.10.
|
|
3
|
+
Version: 2.10.1
|
|
4
4
|
Summary: A modern, type-safe Python SDK for the DevRev API
|
|
5
5
|
Project-URL: Homepage, https://github.com/mgmonteleone/py-dev-rev
|
|
6
6
|
Project-URL: Documentation, https://github.com/mgmonteleone/py-dev-rev
|
|
@@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.10.1] - 2026-03-10
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **MCP articles_list bug** (#170) — Fixed `'tuple' object has no attribute 'model_dump'` error in `devrev_articles_list` MCP tool by correctly accessing `response.articles` instead of calling `list()` on the Pydantic response model. Added `paginated_response()` helper for consistent pagination handling.
|
|
15
|
+
- **CI formatting** (#175) — Resolved formatting check failures in `scripts/debug_articles.py`.
|
|
16
|
+
|
|
17
|
+
### Maintenance
|
|
18
|
+
|
|
19
|
+
- **Dependency updates** (#177) — Consolidated Dependabot updates:
|
|
20
|
+
- `actions/download-artifact` v7 → v8
|
|
21
|
+
- `codecov/codecov-action` v3 → v5
|
|
22
|
+
- `google-github-actions/auth` v2 → v3
|
|
23
|
+
- `authlib` 1.6.6 → 1.6.9 (security fix: removes "none" algorithm from default JWT instance)
|
|
24
|
+
|
|
10
25
|
## [2.10.0] - 2026-03-09
|
|
11
26
|
|
|
12
27
|
### Added
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Debug script for article content creation and inspection.
|
|
3
|
+
|
|
4
|
+
Usage: python3 scripts/debug_articles.py
|
|
5
|
+
Requires: DEVREV_API_TOKEN environment variable
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import json
|
|
9
|
+
import os
|
|
10
|
+
import sys
|
|
11
|
+
|
|
12
|
+
# Add src to path
|
|
13
|
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "src"))
|
|
14
|
+
|
|
15
|
+
from devrev.client import DevRevClient # noqa: E402
|
|
16
|
+
from devrev.models.articles import ( # noqa: E402
|
|
17
|
+
ArticlesGetRequest,
|
|
18
|
+
ArticleStatus,
|
|
19
|
+
)
|
|
20
|
+
from devrev.models.artifacts import ArtifactGetRequest # noqa: E402
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def inspect_article(client: DevRevClient, article_id: str) -> None:
|
|
24
|
+
"""Inspect an article and its artifact content."""
|
|
25
|
+
print("\n" + "=" * 60)
|
|
26
|
+
print(f"INSPECTING ARTICLE: {article_id}")
|
|
27
|
+
print("=" * 60)
|
|
28
|
+
|
|
29
|
+
# Get article metadata
|
|
30
|
+
article = client.articles.get(ArticlesGetRequest(id=article_id))
|
|
31
|
+
print(f"\nTitle: {article.title}")
|
|
32
|
+
print(f"Status: {article.status}")
|
|
33
|
+
print(f"Description: {article.description}")
|
|
34
|
+
print(f"Resource: {json.dumps(article.resource, indent=2, default=str)}")
|
|
35
|
+
|
|
36
|
+
# Try to get content artifact
|
|
37
|
+
if article.resource:
|
|
38
|
+
# Check for artifacts array (how DevRev stores them)
|
|
39
|
+
artifacts = article.resource.get("artifacts", [])
|
|
40
|
+
if artifacts:
|
|
41
|
+
for art_info in artifacts:
|
|
42
|
+
art_id = art_info.get("id", "")
|
|
43
|
+
file_info = art_info.get("file", {})
|
|
44
|
+
print(f"\n--- Artifact: {art_id} ---")
|
|
45
|
+
print(f" File name: {file_info.get('name')}")
|
|
46
|
+
print(f" File type: {file_info.get('type')}")
|
|
47
|
+
print(f" File size: {file_info.get('size')}")
|
|
48
|
+
|
|
49
|
+
# Get full artifact metadata
|
|
50
|
+
try:
|
|
51
|
+
artifact = client.artifacts.get(ArtifactGetRequest(id=art_id))
|
|
52
|
+
print(f" Artifact metadata - file_name: {artifact.file_name}")
|
|
53
|
+
print(f" Artifact metadata - file_type: {artifact.file_type}")
|
|
54
|
+
print(f" Artifact metadata - version: {artifact.version}")
|
|
55
|
+
except Exception as e:
|
|
56
|
+
print(f" Error getting artifact metadata: {e}")
|
|
57
|
+
|
|
58
|
+
# Download content
|
|
59
|
+
try:
|
|
60
|
+
content_bytes = client.artifacts.download(art_id)
|
|
61
|
+
content = content_bytes.decode("utf-8")
|
|
62
|
+
print(f" Content length: {len(content)}")
|
|
63
|
+
print(" Content preview (first 2000 chars):")
|
|
64
|
+
print(f" {content[:2000]}")
|
|
65
|
+
if len(content) > 2000:
|
|
66
|
+
print(f" ... ({len(content) - 2000} more chars)")
|
|
67
|
+
except Exception as e:
|
|
68
|
+
print(f" Error downloading content: {e}")
|
|
69
|
+
|
|
70
|
+
# Check for content_artifact reference (how our SDK stores them)
|
|
71
|
+
content_artifact_id = article.resource.get("content_artifact")
|
|
72
|
+
if content_artifact_id:
|
|
73
|
+
print(f"\n--- Content Artifact (SDK style): {content_artifact_id} ---")
|
|
74
|
+
try:
|
|
75
|
+
content_bytes = client.artifacts.download(content_artifact_id)
|
|
76
|
+
content = content_bytes.decode("utf-8")
|
|
77
|
+
print(f" Content length: {len(content)}")
|
|
78
|
+
print(f" Content preview: {content[:1000]}")
|
|
79
|
+
except Exception as e:
|
|
80
|
+
print(f" Error: {e}")
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def test_create_article(client: DevRevClient, owner_id: str) -> None:
|
|
84
|
+
"""Test creating an article with HTML content."""
|
|
85
|
+
print("\n" + "=" * 60)
|
|
86
|
+
print("TEST: Creating article with HTML content")
|
|
87
|
+
print("=" * 60)
|
|
88
|
+
|
|
89
|
+
html_content = """<h1>Test Article from py-dev-rev SDK</h1>
|
|
90
|
+
<p>This is a <strong>test article</strong> created via the py-dev-rev SDK.</p>
|
|
91
|
+
<h2>Features</h2>
|
|
92
|
+
<ul>
|
|
93
|
+
<li>Rich <em>formatted</em> text</li>
|
|
94
|
+
<li>Lists and headings</li>
|
|
95
|
+
<li>Code: <code>print("hello")</code></li>
|
|
96
|
+
</ul>
|
|
97
|
+
<p>Created at: 2026-03-07 for debugging purposes.</p>"""
|
|
98
|
+
|
|
99
|
+
try:
|
|
100
|
+
article = client.articles.create_with_content(
|
|
101
|
+
title="SDK Test - Rich Content Article",
|
|
102
|
+
content=html_content,
|
|
103
|
+
owned_by=[owner_id],
|
|
104
|
+
description="Test article created by py-dev-rev SDK debug script",
|
|
105
|
+
status=ArticleStatus.DRAFT,
|
|
106
|
+
content_format="text/html",
|
|
107
|
+
)
|
|
108
|
+
print(f"✅ Article created: {article.id} (display: {article.display_id})")
|
|
109
|
+
print(f" Title: {article.title}")
|
|
110
|
+
print(f" Resource: {json.dumps(article.resource, indent=2, default=str)}")
|
|
111
|
+
|
|
112
|
+
# Now test get_with_content on the new article
|
|
113
|
+
test_get_with_content(client, article.id)
|
|
114
|
+
|
|
115
|
+
# Now test update_content
|
|
116
|
+
test_update_content(client, article.id)
|
|
117
|
+
|
|
118
|
+
except Exception as e:
|
|
119
|
+
print(f"❌ Failed to create article: {e}")
|
|
120
|
+
import traceback
|
|
121
|
+
|
|
122
|
+
traceback.print_exc()
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
def test_get_with_content(client: DevRevClient, article_id: str) -> None:
|
|
126
|
+
"""Test the get_with_content method."""
|
|
127
|
+
print("\n" + "=" * 60)
|
|
128
|
+
print(f"TEST: get_with_content for {article_id}")
|
|
129
|
+
print("=" * 60)
|
|
130
|
+
|
|
131
|
+
try:
|
|
132
|
+
result = client.articles.get_with_content(article_id)
|
|
133
|
+
print("✅ get_with_content succeeded!")
|
|
134
|
+
print(f" Title: {result.article.title}")
|
|
135
|
+
print(f" Content format: {result.content_format}")
|
|
136
|
+
print(f" Content version: {result.content_version}")
|
|
137
|
+
print(f" Content length: {len(result.content)}")
|
|
138
|
+
print(f" Content preview: {result.content[:500]}")
|
|
139
|
+
except Exception as e:
|
|
140
|
+
print(f"❌ get_with_content failed: {e}")
|
|
141
|
+
import traceback
|
|
142
|
+
|
|
143
|
+
traceback.print_exc()
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def test_update_content(client: DevRevClient, article_id: str) -> None:
|
|
147
|
+
"""Test updating article content."""
|
|
148
|
+
print("\n" + "=" * 60)
|
|
149
|
+
print(f"TEST: update_content for {article_id}")
|
|
150
|
+
print("=" * 60)
|
|
151
|
+
|
|
152
|
+
updated_html = """<h1>Updated Article</h1>
|
|
153
|
+
<p>This content was <strong>updated</strong> by the py-dev-rev SDK.</p>
|
|
154
|
+
<p>Updated at: 2026-03-07</p>"""
|
|
155
|
+
|
|
156
|
+
try:
|
|
157
|
+
article = client.articles.update_content(article_id, updated_html)
|
|
158
|
+
print("✅ update_content succeeded!")
|
|
159
|
+
print(f" Title: {article.title}")
|
|
160
|
+
print(f" Resource: {json.dumps(article.resource, indent=2, default=str)}")
|
|
161
|
+
|
|
162
|
+
# Verify by re-reading
|
|
163
|
+
result = client.articles.get_with_content(article_id)
|
|
164
|
+
print(f" Verified content length: {len(result.content)}")
|
|
165
|
+
print(f" Verified content: {result.content[:300]}")
|
|
166
|
+
except Exception as e:
|
|
167
|
+
print(f"❌ update_content failed: {e}")
|
|
168
|
+
import traceback
|
|
169
|
+
|
|
170
|
+
traceback.print_exc()
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
def main() -> None:
|
|
174
|
+
"""Run article diagnostics."""
|
|
175
|
+
token = os.environ.get("DEVREV_API_TOKEN")
|
|
176
|
+
if not token:
|
|
177
|
+
print("ERROR: DEVREV_API_TOKEN environment variable not set")
|
|
178
|
+
sys.exit(1)
|
|
179
|
+
|
|
180
|
+
client = DevRevClient()
|
|
181
|
+
|
|
182
|
+
# 1. Inspect the known working article ART-2817
|
|
183
|
+
art_2817_id = "don:core:dvrv-us-1:devo/11Ca9baGrM:article/2817"
|
|
184
|
+
inspect_article(client, art_2817_id)
|
|
185
|
+
|
|
186
|
+
# 2. Test get_with_content on ART-2817
|
|
187
|
+
test_get_with_content(client, art_2817_id)
|
|
188
|
+
|
|
189
|
+
# 3. Get owner ID for creating test articles
|
|
190
|
+
owner_id = "don:identity:dvrv-us-1:devo/11Ca9baGrM:devu/4" # MGM
|
|
191
|
+
|
|
192
|
+
# 4. Try creating a new article with HTML content
|
|
193
|
+
test_create_article(client, owner_id)
|
|
194
|
+
|
|
195
|
+
# 5. Test get_with_content on the newly created article
|
|
196
|
+
# (test_create_article already inspects it, but let's also test the unified method)
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
if __name__ == "__main__":
|
|
200
|
+
main()
|
|
@@ -22,7 +22,7 @@ from devrev.models.base import SetTagWithValue
|
|
|
22
22
|
from devrev_mcp.server import _config, mcp
|
|
23
23
|
from devrev_mcp.utils.errors import format_devrev_error
|
|
24
24
|
from devrev_mcp.utils.formatting import serialize_model, serialize_models
|
|
25
|
-
from devrev_mcp.utils.pagination import clamp_page_size
|
|
25
|
+
from devrev_mcp.utils.pagination import clamp_page_size, paginated_response
|
|
26
26
|
|
|
27
27
|
logger = logging.getLogger(__name__)
|
|
28
28
|
|
|
@@ -41,7 +41,8 @@ async def devrev_articles_list(
|
|
|
41
41
|
limit: Maximum number of articles to return.
|
|
42
42
|
|
|
43
43
|
Returns:
|
|
44
|
-
Dictionary containing count
|
|
44
|
+
Dictionary containing count, list of articles, and optional next_cursor
|
|
45
|
+
for pagination.
|
|
45
46
|
|
|
46
47
|
Raises:
|
|
47
48
|
RuntimeError: If the DevRev API call fails.
|
|
@@ -54,9 +55,9 @@ async def devrev_articles_list(
|
|
|
54
55
|
limit, default=app.config.default_page_size, maximum=app.config.max_page_size
|
|
55
56
|
),
|
|
56
57
|
)
|
|
57
|
-
|
|
58
|
-
items = serialize_models(
|
|
59
|
-
return
|
|
58
|
+
response = await app.get_client().articles.list(request)
|
|
59
|
+
items = serialize_models(response.articles)
|
|
60
|
+
return paginated_response(items, next_cursor=response.next_cursor, total_label="articles")
|
|
60
61
|
except DevRevError as e:
|
|
61
62
|
raise RuntimeError(format_devrev_error(e)) from e
|
|
62
63
|
|
|
@@ -142,7 +143,9 @@ if _config.enable_destructive_tools:
|
|
|
142
143
|
) from e
|
|
143
144
|
|
|
144
145
|
# Convert tag IDs to SetTagWithValue objects
|
|
145
|
-
tags_list =
|
|
146
|
+
tags_list = (
|
|
147
|
+
[SetTagWithValue(id=tag_id) for tag_id in tags] if tags is not None else None
|
|
148
|
+
)
|
|
146
149
|
|
|
147
150
|
article = await app.get_client().articles.create_with_content(
|
|
148
151
|
title=title,
|
|
@@ -219,7 +222,9 @@ if _config.enable_destructive_tools:
|
|
|
219
222
|
) from e
|
|
220
223
|
|
|
221
224
|
# Convert tag IDs to SetTagWithValue objects
|
|
222
|
-
tags_list =
|
|
225
|
+
tags_list = (
|
|
226
|
+
[SetTagWithValue(id=tag_id) for tag_id in tags] if tags is not None else None
|
|
227
|
+
)
|
|
223
228
|
|
|
224
229
|
article = await app.get_client().articles.update_with_content(
|
|
225
230
|
id=id,
|
|
@@ -44,12 +44,16 @@ class TestArticlesListTool:
|
|
|
44
44
|
@pytest.mark.asyncio
|
|
45
45
|
async def test_list_empty(self, mock_ctx, mock_client):
|
|
46
46
|
"""Test listing articles when none exist."""
|
|
47
|
-
|
|
47
|
+
response = MagicMock()
|
|
48
|
+
response.articles = []
|
|
49
|
+
response.next_cursor = None
|
|
50
|
+
mock_client.articles.list.return_value = response
|
|
48
51
|
|
|
49
52
|
result = await devrev_articles_list(mock_ctx)
|
|
50
53
|
|
|
51
54
|
assert result["count"] == 0
|
|
52
55
|
assert result["articles"] == []
|
|
56
|
+
assert "next_cursor" not in result
|
|
53
57
|
mock_client.articles.list.assert_called_once()
|
|
54
58
|
|
|
55
59
|
@pytest.mark.asyncio
|
|
@@ -59,7 +63,10 @@ class TestArticlesListTool:
|
|
|
59
63
|
_make_mock_article(id="article-1", title="Article 1"),
|
|
60
64
|
_make_mock_article(id="article-2", title="Article 2"),
|
|
61
65
|
]
|
|
62
|
-
|
|
66
|
+
response = MagicMock()
|
|
67
|
+
response.articles = mock_articles
|
|
68
|
+
response.next_cursor = None
|
|
69
|
+
mock_client.articles.list.return_value = response
|
|
63
70
|
|
|
64
71
|
result = await devrev_articles_list(mock_ctx, limit=10)
|
|
65
72
|
|
|
@@ -68,6 +75,24 @@ class TestArticlesListTool:
|
|
|
68
75
|
assert result["articles"][0]["id"] == "article-1"
|
|
69
76
|
assert result["articles"][1]["id"] == "article-2"
|
|
70
77
|
|
|
78
|
+
@pytest.mark.asyncio
|
|
79
|
+
async def test_list_with_pagination(self, mock_ctx, mock_client):
|
|
80
|
+
"""Test listing articles returns pagination cursor."""
|
|
81
|
+
response = MagicMock()
|
|
82
|
+
response.articles = [_make_mock_article(id="article-1", title="Article 1")]
|
|
83
|
+
response.next_cursor = "cursor-123"
|
|
84
|
+
mock_client.articles.list.return_value = response
|
|
85
|
+
|
|
86
|
+
result = await devrev_articles_list(mock_ctx, cursor="prev-cursor", limit=10)
|
|
87
|
+
|
|
88
|
+
assert result["count"] == 1
|
|
89
|
+
assert result["next_cursor"] == "cursor-123"
|
|
90
|
+
mock_client.articles.list.assert_called_once()
|
|
91
|
+
call_args = mock_client.articles.list.call_args
|
|
92
|
+
request = call_args[0][0]
|
|
93
|
+
assert request.cursor == "prev-cursor"
|
|
94
|
+
assert request.limit == 10
|
|
95
|
+
|
|
71
96
|
@pytest.mark.asyncio
|
|
72
97
|
async def test_list_error(self, mock_ctx, mock_client):
|
|
73
98
|
"""Test listing articles with API error."""
|
|
@@ -35,14 +35,14 @@ wheels = [
|
|
|
35
35
|
|
|
36
36
|
[[package]]
|
|
37
37
|
name = "authlib"
|
|
38
|
-
version = "1.6.
|
|
38
|
+
version = "1.6.9"
|
|
39
39
|
source = { registry = "https://pypi.org/simple" }
|
|
40
40
|
dependencies = [
|
|
41
41
|
{ name = "cryptography" },
|
|
42
42
|
]
|
|
43
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
43
|
+
sdist = { url = "https://files.pythonhosted.org/packages/af/98/00d3dd826d46959ad8e32af2dbb2398868fd9fd0683c26e56d0789bd0e68/authlib-1.6.9.tar.gz", hash = "sha256:d8f2421e7e5980cc1ddb4e32d3f5fa659cfaf60d8eaf3281ebed192e4ab74f04", size = 165134, upload-time = "2026-03-02T07:44:01.998Z" }
|
|
44
44
|
wheels = [
|
|
45
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
45
|
+
{ url = "https://files.pythonhosted.org/packages/53/23/b65f568ed0c22f1efacb744d2db1a33c8068f384b8c9b482b52ebdbc3ef6/authlib-1.6.9-py2.py3-none-any.whl", hash = "sha256:f08b4c14e08f0861dc18a32357b33fbcfd2ea86cfe3fe149484b4d764c4a0ac3", size = 244197, upload-time = "2026-03-02T07:44:00.307Z" },
|
|
46
46
|
]
|
|
47
47
|
|
|
48
48
|
[[package]]
|
|
@@ -83,6 +83,19 @@ wheels = [
|
|
|
83
83
|
{ url = "https://files.pythonhosted.org/packages/55/1a/5b0320642cca53a473e79c7d273071b5a9a8578f9e370b74da5daa2768d7/bandit-1.9.2-py3-none-any.whl", hash = "sha256:bda8d68610fc33a6e10b7a8f1d61d92c8f6c004051d5e946406be1fb1b16a868", size = 134377, upload-time = "2025-11-23T21:36:17.39Z" },
|
|
84
84
|
]
|
|
85
85
|
|
|
86
|
+
[[package]]
|
|
87
|
+
name = "beautifulsoup4"
|
|
88
|
+
version = "4.14.3"
|
|
89
|
+
source = { registry = "https://pypi.org/simple" }
|
|
90
|
+
dependencies = [
|
|
91
|
+
{ name = "soupsieve" },
|
|
92
|
+
{ name = "typing-extensions" },
|
|
93
|
+
]
|
|
94
|
+
sdist = { url = "https://files.pythonhosted.org/packages/c3/b0/1c6a16426d389813b48d95e26898aff79abbde42ad353958ad95cc8c9b21/beautifulsoup4-4.14.3.tar.gz", hash = "sha256:6292b1c5186d356bba669ef9f7f051757099565ad9ada5dd630bd9de5fa7fb86", size = 627737, upload-time = "2025-11-30T15:08:26.084Z" }
|
|
95
|
+
wheels = [
|
|
96
|
+
{ url = "https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl", hash = "sha256:0918bfe44902e6ad8d57732ba310582e98da931428d231a5ecb9e7c703a735bb", size = 107721, upload-time = "2025-11-30T15:08:24.087Z" },
|
|
97
|
+
]
|
|
98
|
+
|
|
86
99
|
[[package]]
|
|
87
100
|
name = "boolean-py"
|
|
88
101
|
version = "5.0"
|
|
@@ -470,10 +483,12 @@ wheels = [
|
|
|
470
483
|
|
|
471
484
|
[[package]]
|
|
472
485
|
name = "devrev-python-sdk"
|
|
473
|
-
version = "2.
|
|
486
|
+
version = "2.10.1"
|
|
474
487
|
source = { editable = "." }
|
|
475
488
|
dependencies = [
|
|
489
|
+
{ name = "beautifulsoup4" },
|
|
476
490
|
{ name = "httpx" },
|
|
491
|
+
{ name = "markdown" },
|
|
477
492
|
{ name = "pydantic" },
|
|
478
493
|
{ name = "pydantic-settings" },
|
|
479
494
|
{ name = "python-dotenv" },
|
|
@@ -510,6 +525,7 @@ dev = [
|
|
|
510
525
|
{ name = "pre-commit" },
|
|
511
526
|
{ name = "pytest" },
|
|
512
527
|
{ name = "pytest-asyncio" },
|
|
528
|
+
{ name = "pytest-benchmark" },
|
|
513
529
|
{ name = "pytest-cov" },
|
|
514
530
|
{ name = "pytest-mock" },
|
|
515
531
|
{ name = "respx" },
|
|
@@ -535,8 +551,10 @@ security = [
|
|
|
535
551
|
[package.metadata]
|
|
536
552
|
requires-dist = [
|
|
537
553
|
{ name = "bandit", marker = "extra == 'security'", specifier = ">=1.7.0" },
|
|
554
|
+
{ name = "beautifulsoup4", specifier = ">=4.12.0" },
|
|
538
555
|
{ name = "devrev-python-sdk", extras = ["dev", "docs", "benchmark", "security", "mcp"], marker = "extra == 'all'" },
|
|
539
556
|
{ name = "httpx", specifier = ">=0.25.0" },
|
|
557
|
+
{ name = "markdown", specifier = ">=3.5.0" },
|
|
540
558
|
{ name = "mcp", marker = "extra == 'mcp'", specifier = ">=1.0.0" },
|
|
541
559
|
{ name = "mkdocs", marker = "extra == 'docs'", specifier = ">=1.5.0" },
|
|
542
560
|
{ name = "mkdocs-material", marker = "extra == 'docs'", specifier = ">=9.5.0" },
|
|
@@ -551,6 +569,7 @@ requires-dist = [
|
|
|
551
569
|
{ name = "pytest", marker = "extra == 'dev'", specifier = ">=7.4.0,<10.0.0" },
|
|
552
570
|
{ name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.21.0" },
|
|
553
571
|
{ name = "pytest-benchmark", marker = "extra == 'benchmark'", specifier = ">=4.0.0" },
|
|
572
|
+
{ name = "pytest-benchmark", marker = "extra == 'dev'", specifier = ">=4.0.0" },
|
|
554
573
|
{ name = "pytest-cov", marker = "extra == 'dev'", specifier = ">=4.1.0" },
|
|
555
574
|
{ name = "pytest-mock", marker = "extra == 'dev'", specifier = ">=3.12.0" },
|
|
556
575
|
{ name = "python-dotenv", specifier = ">=1.0.0" },
|
|
@@ -2072,6 +2091,15 @@ wheels = [
|
|
|
2072
2091
|
{ url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575, upload-time = "2021-05-16T22:03:41.177Z" },
|
|
2073
2092
|
]
|
|
2074
2093
|
|
|
2094
|
+
[[package]]
|
|
2095
|
+
name = "soupsieve"
|
|
2096
|
+
version = "2.8.3"
|
|
2097
|
+
source = { registry = "https://pypi.org/simple" }
|
|
2098
|
+
sdist = { url = "https://files.pythonhosted.org/packages/7b/ae/2d9c981590ed9999a0d91755b47fc74f74de286b0f5cee14c9269041e6c4/soupsieve-2.8.3.tar.gz", hash = "sha256:3267f1eeea4251fb42728b6dfb746edc9acaffc4a45b27e19450b676586e8349", size = 118627, upload-time = "2026-01-20T04:27:02.457Z" }
|
|
2099
|
+
wheels = [
|
|
2100
|
+
{ url = "https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl", hash = "sha256:ed64f2ba4eebeab06cc4962affce381647455978ffc1e36bb79a545b91f45a95", size = 37016, upload-time = "2026-01-20T04:27:01.012Z" },
|
|
2101
|
+
]
|
|
2102
|
+
|
|
2075
2103
|
[[package]]
|
|
2076
2104
|
name = "sse-starlette"
|
|
2077
2105
|
version = "3.2.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/ISSUE_TEMPLATE/feature_request.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/workflows/claude-code-review.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/workflows/integration-tests.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|