devrev-Python-SDK 3.0.0__tar.gz → 3.0.2__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-3.0.0 → devrev_python_sdk-3.0.2}/PKG-INFO +1 -1
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/changelog.md +12 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/pyproject.toml +1 -1
- devrev_python_sdk-3.0.2/src/devrev/services/_pagination.py +54 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/conversations.py +3 -29
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/works.py +3 -27
- devrev_python_sdk-3.0.2/tests/unit/services/test_pagination.py +48 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/uv.lock +32 -19
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.augment/agents/bug-fixer.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.augment/agents/builder.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.augment/agents/documentation.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.augment/agents/foreman.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.augment/agents/pr-review-boss.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.augment/agents/release-manager.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.augment/agents/simplifier.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.augment/agents/tester.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.augment/commands/foreman-work.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.augment/commands/release-prepare.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.augment/commands/review-start.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.augment/commands/simplify-code.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.augment/rules/code-quality.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.augment/rules/data-modeling.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.augment/rules/devrev-sdk.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.augment/rules/git-workflow.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.augment/rules/pull-requests.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.augment/rules/python-development.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.augment/rules/security.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.augment/rules/testing.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.dockerignore +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.env.sample +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.github/ISSUE_TEMPLATE/article-artifact-simplification.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.github/ISSUE_TEMPLATE/question.yml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.github/dependabot.yml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.github/pull_request_template.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.github/workflows/api-check.yml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.github/workflows/ci.yml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.github/workflows/claude-code-review.yml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.github/workflows/claude.yml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.github/workflows/deploy.yml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.github/workflows/docs.yml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.github/workflows/integration-tests.yml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.github/workflows/release.yml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.github/workflows/sync-openapi.yml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.gitignore +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.pre-commit-config.yaml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/CLAUDE.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/CODE_OF_CONDUCT.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/CONTRIBUTING.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/DEPRECATIONS.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/Dockerfile +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/KNOWN_ISSUES.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/OPENAPI_SPEC_DISCREPANCIES.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/README.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/SECURITY.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/augment-mcp-config-remote.json +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/augment-mcp-config.json +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/augment-settings.json +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/benchmarks/README.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/benchmarks/bench_http_client.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/benchmarks/bench_models.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/benchmarks/bench_pagination.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/benchmarks/conftest.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/context7.json +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/deploy/README.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/deploy/audit-logging-setup.sh +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/deploy/cloudbuild.yaml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/deploy/monitoring/README.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/deploy/monitoring/alert-policies.yaml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/deploy/monitoring/dashboard.json +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/deploy/monitoring/validate-config.sh +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/deploy/service.yaml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docker-compose.yml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/beta/brands.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/beta/engagements.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/beta/incidents.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/beta/index.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/beta/question-answers.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/beta/recommendations.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/beta/search.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/beta/uoms.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/beta-api-differences.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/client.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/config.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/exceptions.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/index.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/models/accounts.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/models/base.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/models/index.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/models/users.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/models/works.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/services/accounts.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/services/articles.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/services/code-changes.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/services/conversations.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/services/dev-users.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/services/groups.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/services/index.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/services/links.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/services/parts.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/services/rev-users.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/services/slas.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/services/tags.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/services/timeline-entries.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/services/webhooks.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/api/services/works.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/examples/advanced.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/examples/basic.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/examples/beta-features.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/examples/index.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/examples/integrations.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/getting-started/authentication.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/getting-started/index.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/getting-started/installation.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/getting-started/quickstart.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/guides/beta-api.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/guides/compatibility.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/guides/configuration.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/guides/error-handling.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/guides/github-actions-setup.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/guides/index.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/guides/logging.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/guides/pagination.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/guides/sync-vs-async.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/guides/testing.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/guides/version-support.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/guides/write-integration-testing-strategy.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/hooks/copy_llms.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/index.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/mcp/deployment.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/mcp/index.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/mcp/quickstart.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/mcp/tools-reference.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/docs/stylesheets/extra.css +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/examples/README.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/examples/basic/README.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/examples/basic/async_example.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/examples/basic/create_work.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/examples/basic/error_handling.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/examples/basic/list_accounts.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/examples/basic/pagination.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/examples/basic/search_users.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/examples/integrations/cloud_functions/README.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/examples/integrations/cloud_functions/main.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/examples/integrations/cloud_functions/requirements.txt +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/examples/integrations/fastapi/README.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/examples/integrations/fastapi/main.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/examples/integrations/fastapi/requirements.txt +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/examples/integrations/flask/README.md +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/examples/integrations/flask/app.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/examples/integrations/flask/requirements.txt +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/llms-ctx-full.txt +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/llms-ctx.txt +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/llms-mcp.txt +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/llms.txt +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/mkdocs.yml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/openapi-beta.yaml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/openapi-public.yaml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/openapi-spec-corrections.yaml +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/scripts/build_ai_docs.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/scripts/debug_articles.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/scripts/setup-github-secrets.sh +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/__init__.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/client.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/config.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/exceptions.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/__init__.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/accounts.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/articles.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/artifacts.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/base.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/brands.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/code_changes.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/conversations.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/dev_users.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/engagements.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/groups.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/incidents.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/links.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/notifications.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/parts.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/preferences.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/question_answers.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/recommendations.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/rev_orgs.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/rev_users.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/search.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/slas.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/sync.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/tags.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/tasks.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/timeline_entries.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/timeline_events.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/track_events.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/uoms.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/webhooks.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/widgets.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/models/works.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/py.typed +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/__init__.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/accounts.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/articles.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/artifacts.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/base.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/brands.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/code_changes.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/dev_users.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/engagements.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/groups.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/incidents.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/links.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/notifications.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/parts.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/preferences.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/question_answers.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/recommendations.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/rev_orgs.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/rev_users.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/search.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/slas.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/tags.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/timeline_entries.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/track_events.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/uoms.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/services/webhooks.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/utils/__init__.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/utils/content_converter.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/utils/deprecation.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/utils/http.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/utils/logging.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev/utils/pagination.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/__init__.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/__main__.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/config.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/middleware/__init__.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/middleware/audit.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/middleware/auth.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/middleware/health.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/middleware/rate_limit.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/prompts/__init__.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/prompts/escalation.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/prompts/investigate.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/prompts/response.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/prompts/summarize.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/prompts/triage.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/resources/__init__.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/resources/account.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/resources/article.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/resources/conversation.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/resources/part.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/resources/server_info.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/resources/ticket.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/resources/user.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/server.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/tools/__init__.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/tools/accounts.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/tools/articles.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/tools/conversations.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/tools/engagements.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/tools/groups.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/tools/incidents.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/tools/links.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/tools/parts.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/tools/question_answers.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/tools/recommendations.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/tools/rev_orgs.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/tools/search.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/tools/server_info.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/tools/slas.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/tools/tags.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/tools/timeline.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/tools/users.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/tools/works.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/utils/__init__.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/utils/don_id.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/utils/errors.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/utils/formatting.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/src/devrev_mcp/utils/pagination.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/__init__.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/conftest.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/__init__.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/conftest.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/test_accounts_e2e.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/test_all_readonly_endpoints.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/test_articles_lifecycle.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/test_backwards_compatibility.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/test_contacts_e2e.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/test_core_services_phase1.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/test_date_filtering.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/test_extended_services_phase2.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/test_get_endpoints.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/test_issues_e2e.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/test_kb_articles_e2e.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/test_mcp_articles.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/test_ping.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/test_question_answers_e2e.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/test_readonly_endpoints.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/test_specialized_services_phase3.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/test_tickets_e2e.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/test_write_operations.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/utils/__init__.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/utils/cleanup.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/utils/constants.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/integration/utils/data_manager.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/performance/__init__.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/performance/test_articles_performance.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/__init__.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/__init__.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/conftest.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_audit.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_config.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_phase4_transport.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_prompts.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_resources.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_server_info.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_tools_accounts.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_tools_articles.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_tools_conversations.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_tools_engagements.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_tools_groups.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_tools_incidents.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_tools_links.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_tools_parts.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_tools_question_answers.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_tools_recommendations.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_tools_search.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_tools_slas.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_tools_tags.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_tools_timeline.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_tools_users.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_tools_works.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/mcp/test_utils.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/models/__init__.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/models/test_user_state_regression.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/__init__.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/conftest.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_articles.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_async_services.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_brands.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_code_changes.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_conversations.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_engagements.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_groups.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_incidents.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_links.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_notifications.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_parts.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_preferences.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_question_answers.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_recommendations.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_search.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_slas.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_tags.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_timeline_entries.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_track_events.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_uoms.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_webhooks.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/services/test_works.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/test_articles_unified.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/test_artifacts.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/test_backward_compatibility.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/test_base_service.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/test_client.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/test_config.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/test_content_converter.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/test_deprecation.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/test_don_id_validation.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/test_error_handling.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/test_exceptions.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/test_http.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/test_logging.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/test_pagination.py +0 -0
- {devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/tests/unit/test_rev_orgs.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devrev-Python-SDK
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.2
|
|
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
|
|
@@ -13,6 +13,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
13
13
|
|
|
14
14
|
### Fixed
|
|
15
15
|
|
|
16
|
+
## [3.0.1] - 2026-04-22
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- **Shared pagination helper** (CUSS-457) — Extracted the per-request page-size
|
|
21
|
+
clamp (`_MAX_PAGE = 100`) and the `resolve_page_limit` helper from
|
|
22
|
+
`conversations.py` and `works.py` into a single shared module
|
|
23
|
+
`src/devrev/services/_pagination.py`. Non-breaking internal refactor; no
|
|
24
|
+
public SDK or MCP surface change. The shared helper adopts the tighter of
|
|
25
|
+
the two pre-existing semantics, eliminating a small over-fetch on the
|
|
26
|
+
final page of paginated `list_*_since` calls in `WorksService`.
|
|
27
|
+
|
|
16
28
|
## [3.0.0] - 2026-04-22
|
|
17
29
|
|
|
18
30
|
### Added
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"""Shared pagination helpers for cursor-streaming list helpers.
|
|
2
|
+
|
|
3
|
+
The DevRev ``*.list`` endpoints cap per-page responses at 100 items and the
|
|
4
|
+
corresponding ``*ListRequest.limit`` fields are pydantic-constrained to
|
|
5
|
+
``le=100``. Any service that drives cursor pagination from a user-supplied
|
|
6
|
+
``overall_limit`` / ``page_size`` pair must therefore clamp the value it puts
|
|
7
|
+
on the request body before construction, or the request will fail validation
|
|
8
|
+
locally before it is ever sent.
|
|
9
|
+
|
|
10
|
+
:func:`resolve_page_limit` centralises that clamping so every ``list_*_since``
|
|
11
|
+
helper resolves the per-page ``limit`` identically.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
from typing import Final
|
|
17
|
+
|
|
18
|
+
_MAX_PAGE: Final[int] = 100
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def resolve_page_limit(
|
|
22
|
+
overall_limit: int | None,
|
|
23
|
+
collected: int,
|
|
24
|
+
page_size: int | None,
|
|
25
|
+
) -> int | None:
|
|
26
|
+
"""Compute the ``limit`` to send for the next page request.
|
|
27
|
+
|
|
28
|
+
The returned value is always clamped to :data:`_MAX_PAGE` so callers using
|
|
29
|
+
an ``overall_limit`` greater than the server maximum (e.g. ``limit=200,
|
|
30
|
+
page_size=None``) still paginate correctly. When both ``overall_limit`` and
|
|
31
|
+
``page_size`` are supplied the tightest of ``{page_size, remaining,
|
|
32
|
+
_MAX_PAGE}`` wins.
|
|
33
|
+
|
|
34
|
+
Args:
|
|
35
|
+
overall_limit: Caller-supplied hard cap on total items to return across
|
|
36
|
+
all pages, or ``None`` to stream until the server runs out of
|
|
37
|
+
results.
|
|
38
|
+
collected: Number of items already accumulated across prior pages.
|
|
39
|
+
page_size: Caller-supplied per-page size, or ``None`` to defer to the
|
|
40
|
+
server default (still clamped to :data:`_MAX_PAGE`).
|
|
41
|
+
|
|
42
|
+
Returns:
|
|
43
|
+
The ``limit`` to put on the next ``*ListRequest``, or ``None`` to omit
|
|
44
|
+
it entirely (only when both ``overall_limit`` and ``page_size`` are
|
|
45
|
+
``None``).
|
|
46
|
+
"""
|
|
47
|
+
if overall_limit is None:
|
|
48
|
+
if page_size is None:
|
|
49
|
+
return None
|
|
50
|
+
return min(page_size, _MAX_PAGE)
|
|
51
|
+
remaining = overall_limit - collected
|
|
52
|
+
if page_size is None:
|
|
53
|
+
return min(remaining, _MAX_PAGE)
|
|
54
|
+
return min(page_size, remaining, _MAX_PAGE)
|
|
@@ -23,6 +23,7 @@ from devrev.models.conversations import (
|
|
|
23
23
|
ConversationsUpdateRequest,
|
|
24
24
|
ConversationsUpdateResponse,
|
|
25
25
|
)
|
|
26
|
+
from devrev.services._pagination import resolve_page_limit
|
|
26
27
|
from devrev.services.base import AsyncBaseService, BaseService
|
|
27
28
|
|
|
28
29
|
|
|
@@ -47,33 +48,6 @@ def _normalize_sort_by(sort_by: Sequence[str] | None) -> list[str] | None:
|
|
|
47
48
|
return normalized
|
|
48
49
|
|
|
49
50
|
|
|
50
|
-
# ``ConversationsListRequest.limit`` is pydantic-constrained to ``le=100``;
|
|
51
|
-
# clamp any computed per-page limit so pagination loops do not construct a
|
|
52
|
-
# request body that fails validation before it is ever sent.
|
|
53
|
-
_CONVERSATIONS_MAX_PAGE = 100
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
def _resolve_page_limit(
|
|
57
|
-
overall_limit: int | None,
|
|
58
|
-
collected: int,
|
|
59
|
-
page_size: int | None,
|
|
60
|
-
) -> int | None:
|
|
61
|
-
"""Compute the ``limit`` to send for the next page request.
|
|
62
|
-
|
|
63
|
-
The returned value is always clamped to ``_CONVERSATIONS_MAX_PAGE`` so
|
|
64
|
-
callers using an ``overall_limit`` greater than the server maximum (e.g.
|
|
65
|
-
``limit=200, page_size=None``) still paginate correctly.
|
|
66
|
-
"""
|
|
67
|
-
if overall_limit is None:
|
|
68
|
-
if page_size is None:
|
|
69
|
-
return None
|
|
70
|
-
return min(page_size, _CONVERSATIONS_MAX_PAGE)
|
|
71
|
-
remaining = overall_limit - collected
|
|
72
|
-
if page_size is None:
|
|
73
|
-
return min(remaining, _CONVERSATIONS_MAX_PAGE)
|
|
74
|
-
return min(page_size, remaining, _CONVERSATIONS_MAX_PAGE)
|
|
75
|
-
|
|
76
|
-
|
|
77
51
|
def _is_before_cutoff(modified_date: datetime | None, cutoff: datetime) -> bool:
|
|
78
52
|
"""Return True if ``modified_date`` is strictly older than ``cutoff``.
|
|
79
53
|
|
|
@@ -135,7 +109,7 @@ class ConversationsService(BaseService):
|
|
|
135
109
|
while True:
|
|
136
110
|
if limit is not None and len(results) >= limit:
|
|
137
111
|
break
|
|
138
|
-
request_limit =
|
|
112
|
+
request_limit = resolve_page_limit(limit, len(results), page_size)
|
|
139
113
|
request = ConversationsListRequest(
|
|
140
114
|
cursor=cursor,
|
|
141
115
|
limit=request_limit,
|
|
@@ -267,7 +241,7 @@ class AsyncConversationsService(AsyncBaseService):
|
|
|
267
241
|
while True:
|
|
268
242
|
if limit is not None and len(results) >= limit:
|
|
269
243
|
break
|
|
270
|
-
request_limit =
|
|
244
|
+
request_limit = resolve_page_limit(limit, len(results), page_size)
|
|
271
245
|
request = ConversationsListRequest(
|
|
272
246
|
cursor=cursor,
|
|
273
247
|
limit=request_limit,
|
|
@@ -31,6 +31,7 @@ from devrev.models.works import (
|
|
|
31
31
|
WorksUpdateResponse,
|
|
32
32
|
WorkType,
|
|
33
33
|
)
|
|
34
|
+
from devrev.services._pagination import resolve_page_limit
|
|
34
35
|
from devrev.services.base import AsyncBaseService, BaseService
|
|
35
36
|
|
|
36
37
|
if TYPE_CHECKING:
|
|
@@ -58,31 +59,6 @@ def _is_before_cutoff(timestamp: datetime | None, cutoff: datetime) -> bool:
|
|
|
58
59
|
return False
|
|
59
60
|
|
|
60
61
|
|
|
61
|
-
# ``WorksListRequest.limit`` is pydantic-constrained to ``le=100``; clamp any
|
|
62
|
-
# computed per-page limit so pagination loops do not construct a request body
|
|
63
|
-
# that fails validation before it is ever sent.
|
|
64
|
-
_WORKS_MAX_PAGE = 100
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
def _resolve_page_limit(
|
|
68
|
-
overall_limit: int | None,
|
|
69
|
-
collected: int,
|
|
70
|
-
page_size: int | None,
|
|
71
|
-
) -> int | None:
|
|
72
|
-
"""Compute the ``limit`` to send for the next page request.
|
|
73
|
-
|
|
74
|
-
The returned value is always clamped to ``_WORKS_MAX_PAGE`` so callers using
|
|
75
|
-
an ``overall_limit`` greater than the server maximum (e.g. ``limit=200,
|
|
76
|
-
page_size=None``) still paginate correctly.
|
|
77
|
-
"""
|
|
78
|
-
if page_size is not None:
|
|
79
|
-
return min(page_size, _WORKS_MAX_PAGE)
|
|
80
|
-
if overall_limit is None:
|
|
81
|
-
return None
|
|
82
|
-
remaining = overall_limit - collected
|
|
83
|
-
return min(remaining, _WORKS_MAX_PAGE)
|
|
84
|
-
|
|
85
|
-
|
|
86
62
|
def _normalize_sort_by(sort_by: Sequence[str] | None) -> _StrList | None:
|
|
87
63
|
"""Normalize sort_by entries to the server-expected ``field:direction`` form.
|
|
88
64
|
|
|
@@ -351,7 +327,7 @@ class WorksService(BaseService):
|
|
|
351
327
|
owned_by=owned_by,
|
|
352
328
|
applies_to_part=applies_to_part,
|
|
353
329
|
cursor=cursor,
|
|
354
|
-
limit=
|
|
330
|
+
limit=resolve_page_limit(limit, len(collected), page_size),
|
|
355
331
|
sort_by=sort_by,
|
|
356
332
|
)
|
|
357
333
|
stop = False
|
|
@@ -577,7 +553,7 @@ class AsyncWorksService(AsyncBaseService):
|
|
|
577
553
|
owned_by=owned_by,
|
|
578
554
|
applies_to_part=applies_to_part,
|
|
579
555
|
cursor=cursor,
|
|
580
|
-
limit=
|
|
556
|
+
limit=resolve_page_limit(limit, len(collected), page_size),
|
|
581
557
|
sort_by=sort_by,
|
|
582
558
|
)
|
|
583
559
|
stop = False
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"""Unit tests for the shared pagination helper."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import pytest
|
|
6
|
+
|
|
7
|
+
from devrev.services._pagination import _MAX_PAGE, resolve_page_limit
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class TestResolvePageLimit:
|
|
11
|
+
"""Tight-clamping semantics for ``resolve_page_limit``."""
|
|
12
|
+
|
|
13
|
+
def test_max_page_constant_is_one_hundred(self) -> None:
|
|
14
|
+
"""Server-side cap is exactly 100 items per page."""
|
|
15
|
+
assert _MAX_PAGE == 100
|
|
16
|
+
|
|
17
|
+
@pytest.mark.parametrize(
|
|
18
|
+
("overall_limit", "collected", "page_size", "expected"),
|
|
19
|
+
[
|
|
20
|
+
# No overall cap, no page size → defer entirely to server.
|
|
21
|
+
(None, 0, None, None),
|
|
22
|
+
# No overall cap, small page size → pass through.
|
|
23
|
+
(None, 0, 50, 50),
|
|
24
|
+
# No overall cap, page_size above MAX → clamp to MAX.
|
|
25
|
+
(None, 0, 200, 100),
|
|
26
|
+
# Overall cap below MAX, no page size → send remaining.
|
|
27
|
+
(50, 0, None, 50),
|
|
28
|
+
# Overall cap with some collected, no page size → send remaining.
|
|
29
|
+
(50, 45, None, 5),
|
|
30
|
+
# Overall cap above MAX, no page size → clamp to MAX.
|
|
31
|
+
(500, 0, None, 100),
|
|
32
|
+
# Tightest of {page_size=10, remaining=5, MAX=100} wins.
|
|
33
|
+
(50, 45, 10, 5),
|
|
34
|
+
# Tightest of {page_size=50, remaining=500, MAX=100} wins.
|
|
35
|
+
(500, 0, 50, 50),
|
|
36
|
+
# page_size > MAX with large remaining → MAX wins.
|
|
37
|
+
(500, 0, 200, 100),
|
|
38
|
+
],
|
|
39
|
+
)
|
|
40
|
+
def test_resolve_page_limit_cases(
|
|
41
|
+
self,
|
|
42
|
+
overall_limit: int | None,
|
|
43
|
+
collected: int,
|
|
44
|
+
page_size: int | None,
|
|
45
|
+
expected: int | None,
|
|
46
|
+
) -> None:
|
|
47
|
+
"""Exhaustive coverage of the clamping matrix from the ticket."""
|
|
48
|
+
assert resolve_page_limit(overall_limit, collected, page_size) == expected
|
|
@@ -35,14 +35,15 @@ wheels = [
|
|
|
35
35
|
|
|
36
36
|
[[package]]
|
|
37
37
|
name = "authlib"
|
|
38
|
-
version = "1.
|
|
38
|
+
version = "1.7.0"
|
|
39
39
|
source = { registry = "https://pypi.org/simple" }
|
|
40
40
|
dependencies = [
|
|
41
41
|
{ name = "cryptography" },
|
|
42
|
+
{ name = "joserfc" },
|
|
42
43
|
]
|
|
43
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
44
|
+
sdist = { url = "https://files.pythonhosted.org/packages/d9/82/4d0603f30c1b4629b1f091bb266b0d7986434891d6940a8c87f8098db24e/authlib-1.7.0.tar.gz", hash = "sha256:b3e326c9aa9cc3ea95fe7d89fd880722d3608da4d00e8a27e061e64b48d801d5", size = 175890, upload-time = "2026-04-18T11:00:28.559Z" }
|
|
44
45
|
wheels = [
|
|
45
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
46
|
+
{ url = "https://files.pythonhosted.org/packages/ca/48/c954218b2a250e23f178f10167c4173fecb5a75d2c206f0a67ba58006c26/authlib-1.7.0-py2.py3-none-any.whl", hash = "sha256:e36817afb02f6f0b6bf55f150782499ddd6ddf44b402bb055d3263cc65ac9ae0", size = 258779, upload-time = "2026-04-18T11:00:26.64Z" },
|
|
46
47
|
]
|
|
47
48
|
|
|
48
49
|
[[package]]
|
|
@@ -483,7 +484,7 @@ wheels = [
|
|
|
483
484
|
|
|
484
485
|
[[package]]
|
|
485
486
|
name = "devrev-python-sdk"
|
|
486
|
-
version = "
|
|
487
|
+
version = "3.0.2"
|
|
487
488
|
source = { editable = "." }
|
|
488
489
|
dependencies = [
|
|
489
490
|
{ name = "beautifulsoup4" },
|
|
@@ -729,6 +730,18 @@ wheels = [
|
|
|
729
730
|
{ url = "https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl", hash = "sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713", size = 309071, upload-time = "2025-12-15T08:41:44.973Z" },
|
|
730
731
|
]
|
|
731
732
|
|
|
733
|
+
[[package]]
|
|
734
|
+
name = "joserfc"
|
|
735
|
+
version = "1.6.4"
|
|
736
|
+
source = { registry = "https://pypi.org/simple" }
|
|
737
|
+
dependencies = [
|
|
738
|
+
{ name = "cryptography" },
|
|
739
|
+
]
|
|
740
|
+
sdist = { url = "https://files.pythonhosted.org/packages/de/c6/de8fdbdfa75c8ca04fead38a82d573df8a82906e984c349d58665f459558/joserfc-1.6.4.tar.gz", hash = "sha256:34ce5f499bfcc5e9ad4cc75077f9278ab3227b71da9aaf28f9ab705f8a560d3c", size = 231866, upload-time = "2026-04-13T13:15:40.632Z" }
|
|
741
|
+
wheels = [
|
|
742
|
+
{ url = "https://files.pythonhosted.org/packages/b6/f7/210b27752e972edb36d239315b08d3eb6b14824cc4a590da2337d195260b/joserfc-1.6.4-py3-none-any.whl", hash = "sha256:3e4a22b509b41908989237a045e25c8308d5fd47ab96bdae2dd8057c6451003a", size = 70464, upload-time = "2026-04-13T13:15:39.259Z" },
|
|
743
|
+
]
|
|
744
|
+
|
|
732
745
|
[[package]]
|
|
733
746
|
name = "jsonschema"
|
|
734
747
|
version = "4.26.0"
|
|
@@ -1505,20 +1518,20 @@ wheels = [
|
|
|
1505
1518
|
|
|
1506
1519
|
[[package]]
|
|
1507
1520
|
name = "pygments"
|
|
1508
|
-
version = "2.
|
|
1521
|
+
version = "2.20.0"
|
|
1509
1522
|
source = { registry = "https://pypi.org/simple" }
|
|
1510
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1523
|
+
sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" }
|
|
1511
1524
|
wheels = [
|
|
1512
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1525
|
+
{ url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" },
|
|
1513
1526
|
]
|
|
1514
1527
|
|
|
1515
1528
|
[[package]]
|
|
1516
1529
|
name = "pyjwt"
|
|
1517
|
-
version = "2.
|
|
1530
|
+
version = "2.12.1"
|
|
1518
1531
|
source = { registry = "https://pypi.org/simple" }
|
|
1519
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1532
|
+
sdist = { url = "https://files.pythonhosted.org/packages/c2/27/a3b6e5bf6ff856d2509292e95c8f57f0df7017cf5394921fc4e4ef40308a/pyjwt-2.12.1.tar.gz", hash = "sha256:c74a7a2adf861c04d002db713dd85f84beb242228e671280bf709d765b03672b", size = 102564, upload-time = "2026-03-13T19:27:37.25Z" }
|
|
1520
1533
|
wheels = [
|
|
1521
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1534
|
+
{ url = "https://files.pythonhosted.org/packages/e5/7a/8dd906bd22e79e47397a61742927f6747fe93242ef86645ee9092e610244/pyjwt-2.12.1-py3-none-any.whl", hash = "sha256:28ca37c070cad8ba8cd9790cd940535d40274d22f80ab87f3ac6a713e6e8454c", size = 29726, upload-time = "2026-03-13T19:27:35.677Z" },
|
|
1522
1535
|
]
|
|
1523
1536
|
|
|
1524
1537
|
[package.optional-dependencies]
|
|
@@ -1528,15 +1541,15 @@ crypto = [
|
|
|
1528
1541
|
|
|
1529
1542
|
[[package]]
|
|
1530
1543
|
name = "pymdown-extensions"
|
|
1531
|
-
version = "10.
|
|
1544
|
+
version = "10.21.2"
|
|
1532
1545
|
source = { registry = "https://pypi.org/simple" }
|
|
1533
1546
|
dependencies = [
|
|
1534
1547
|
{ name = "markdown" },
|
|
1535
1548
|
{ name = "pyyaml" },
|
|
1536
1549
|
]
|
|
1537
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1550
|
+
sdist = { url = "https://files.pythonhosted.org/packages/df/08/f1c908c581fd11913da4711ea7ba32c0eee40b0190000996bb863b0c9349/pymdown_extensions-10.21.2.tar.gz", hash = "sha256:c3f55a5b8a1d0edf6699e35dcbea71d978d34ff3fa79f3d807b8a5b3fa90fbdc", size = 853922, upload-time = "2026-03-29T15:01:55.233Z" }
|
|
1538
1551
|
wheels = [
|
|
1539
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1552
|
+
{ url = "https://files.pythonhosted.org/packages/f7/27/a2fc51a4a122dfd1015e921ae9d22fee3d20b0b8080d9a704578bf9deece/pymdown_extensions-10.21.2-py3-none-any.whl", hash = "sha256:5c0fd2a2bea14eb39af8ff284f1066d898ab2187d81b889b75d46d4348c01638", size = 268901, upload-time = "2026-03-29T15:01:53.244Z" },
|
|
1540
1553
|
]
|
|
1541
1554
|
|
|
1542
1555
|
[[package]]
|
|
@@ -1629,20 +1642,20 @@ wheels = [
|
|
|
1629
1642
|
|
|
1630
1643
|
[[package]]
|
|
1631
1644
|
name = "python-dotenv"
|
|
1632
|
-
version = "1.2.
|
|
1645
|
+
version = "1.2.2"
|
|
1633
1646
|
source = { registry = "https://pypi.org/simple" }
|
|
1634
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1647
|
+
sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" }
|
|
1635
1648
|
wheels = [
|
|
1636
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1649
|
+
{ url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" },
|
|
1637
1650
|
]
|
|
1638
1651
|
|
|
1639
1652
|
[[package]]
|
|
1640
1653
|
name = "python-multipart"
|
|
1641
|
-
version = "0.0.
|
|
1654
|
+
version = "0.0.26"
|
|
1642
1655
|
source = { registry = "https://pypi.org/simple" }
|
|
1643
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1656
|
+
sdist = { url = "https://files.pythonhosted.org/packages/88/71/b145a380824a960ebd60e1014256dbb7d2253f2316ff2d73dfd8928ec2c3/python_multipart-0.0.26.tar.gz", hash = "sha256:08fadc45918cd615e26846437f50c5d6d23304da32c341f289a617127b081f17", size = 43501, upload-time = "2026-04-10T14:09:59.473Z" }
|
|
1644
1657
|
wheels = [
|
|
1645
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1658
|
+
{ url = "https://files.pythonhosted.org/packages/9a/22/f1925cdda983ab66fc8ec6ec8014b959262747e58bdca26a4e3d1da29d56/python_multipart-0.0.26-py3-none-any.whl", hash = "sha256:c0b169f8c4484c13b0dcf2ef0ec3a4adb255c4b7d18d8e420477d2b1dd03f185", size = 28847, upload-time = "2026-04-10T14:09:58.131Z" },
|
|
1646
1659
|
]
|
|
1647
1660
|
|
|
1648
1661
|
[[package]]
|
|
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-3.0.0 → devrev_python_sdk-3.0.2}/.github/ISSUE_TEMPLATE/feature_request.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devrev_python_sdk-3.0.0 → devrev_python_sdk-3.0.2}/.github/workflows/claude-code-review.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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|