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.
Files changed (364) hide show
  1. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/workflows/ci.yml +1 -1
  2. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/workflows/deploy.yml +1 -1
  3. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/workflows/release.yml +2 -2
  4. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/PKG-INFO +1 -1
  5. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/changelog.md +15 -0
  6. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/pyproject.toml +1 -1
  7. devrev_python_sdk-2.10.1/scripts/debug_articles.py +200 -0
  8. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/articles.py +12 -7
  9. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_articles.py +27 -2
  10. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/uv.lock +32 -4
  11. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/agents/bug-fixer.md +0 -0
  12. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/agents/builder.md +0 -0
  13. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/agents/documentation.md +0 -0
  14. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/agents/foreman.md +0 -0
  15. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/agents/pr-review-boss.md +0 -0
  16. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/agents/release-manager.md +0 -0
  17. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/agents/simplifier.md +0 -0
  18. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/agents/tester.md +0 -0
  19. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/commands/foreman-work.md +0 -0
  20. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/commands/release-prepare.md +0 -0
  21. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/commands/review-start.md +0 -0
  22. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/commands/simplify-code.md +0 -0
  23. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/rules/code-quality.md +0 -0
  24. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/rules/data-modeling.md +0 -0
  25. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/rules/devrev-sdk.md +0 -0
  26. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/rules/git-workflow.md +0 -0
  27. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/rules/pull-requests.md +0 -0
  28. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/rules/python-development.md +0 -0
  29. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/rules/security.md +0 -0
  30. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.augment/rules/testing.md +0 -0
  31. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.dockerignore +0 -0
  32. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.env.sample +0 -0
  33. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/ISSUE_TEMPLATE/article-artifact-simplification.md +0 -0
  34. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  35. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  36. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  37. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/ISSUE_TEMPLATE/question.yml +0 -0
  38. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/dependabot.yml +0 -0
  39. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/pull_request_template.md +0 -0
  40. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/workflows/api-check.yml +0 -0
  41. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/workflows/claude-code-review.yml +0 -0
  42. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/workflows/claude.yml +0 -0
  43. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/workflows/docs.yml +0 -0
  44. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/workflows/integration-tests.yml +0 -0
  45. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.github/workflows/sync-openapi.yml +0 -0
  46. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.gitignore +0 -0
  47. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/.pre-commit-config.yaml +0 -0
  48. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/CLAUDE.md +0 -0
  49. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/CODE_OF_CONDUCT.md +0 -0
  50. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/CONTRIBUTING.md +0 -0
  51. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/DEPRECATIONS.md +0 -0
  52. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/Dockerfile +0 -0
  53. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/KNOWN_ISSUES.md +0 -0
  54. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/OPENAPI_SPEC_DISCREPANCIES.md +0 -0
  55. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/README.md +0 -0
  56. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/SECURITY.md +0 -0
  57. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/augment-mcp-config-remote.json +0 -0
  58. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/augment-mcp-config.json +0 -0
  59. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/augment-settings.json +0 -0
  60. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/benchmarks/README.md +0 -0
  61. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/benchmarks/bench_http_client.py +0 -0
  62. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/benchmarks/bench_models.py +0 -0
  63. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/benchmarks/bench_pagination.py +0 -0
  64. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/benchmarks/conftest.py +0 -0
  65. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/context7.json +0 -0
  66. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/deploy/README.md +0 -0
  67. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/deploy/audit-logging-setup.sh +0 -0
  68. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/deploy/cloudbuild.yaml +0 -0
  69. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/deploy/monitoring/README.md +0 -0
  70. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/deploy/monitoring/alert-policies.yaml +0 -0
  71. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/deploy/monitoring/dashboard.json +0 -0
  72. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/deploy/monitoring/validate-config.sh +0 -0
  73. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/deploy/service.yaml +0 -0
  74. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docker-compose.yml +0 -0
  75. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/beta/brands.md +0 -0
  76. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/beta/engagements.md +0 -0
  77. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/beta/incidents.md +0 -0
  78. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/beta/index.md +0 -0
  79. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/beta/question-answers.md +0 -0
  80. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/beta/recommendations.md +0 -0
  81. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/beta/search.md +0 -0
  82. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/beta/uoms.md +0 -0
  83. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/beta-api-differences.md +0 -0
  84. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/client.md +0 -0
  85. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/config.md +0 -0
  86. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/exceptions.md +0 -0
  87. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/index.md +0 -0
  88. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/models/accounts.md +0 -0
  89. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/models/base.md +0 -0
  90. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/models/index.md +0 -0
  91. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/models/users.md +0 -0
  92. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/models/works.md +0 -0
  93. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/accounts.md +0 -0
  94. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/articles.md +0 -0
  95. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/code-changes.md +0 -0
  96. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/conversations.md +0 -0
  97. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/dev-users.md +0 -0
  98. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/groups.md +0 -0
  99. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/index.md +0 -0
  100. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/links.md +0 -0
  101. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/parts.md +0 -0
  102. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/rev-users.md +0 -0
  103. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/slas.md +0 -0
  104. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/tags.md +0 -0
  105. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/timeline-entries.md +0 -0
  106. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/webhooks.md +0 -0
  107. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/api/services/works.md +0 -0
  108. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/examples/advanced.md +0 -0
  109. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/examples/basic.md +0 -0
  110. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/examples/beta-features.md +0 -0
  111. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/examples/index.md +0 -0
  112. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/examples/integrations.md +0 -0
  113. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/getting-started/authentication.md +0 -0
  114. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/getting-started/index.md +0 -0
  115. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/getting-started/installation.md +0 -0
  116. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/getting-started/quickstart.md +0 -0
  117. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/beta-api.md +0 -0
  118. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/compatibility.md +0 -0
  119. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/configuration.md +0 -0
  120. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/error-handling.md +0 -0
  121. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/github-actions-setup.md +0 -0
  122. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/index.md +0 -0
  123. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/logging.md +0 -0
  124. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/pagination.md +0 -0
  125. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/sync-vs-async.md +0 -0
  126. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/testing.md +0 -0
  127. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/version-support.md +0 -0
  128. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/guides/write-integration-testing-strategy.md +0 -0
  129. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/hooks/copy_llms.py +0 -0
  130. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/index.md +0 -0
  131. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/mcp/deployment.md +0 -0
  132. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/mcp/index.md +0 -0
  133. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/mcp/quickstart.md +0 -0
  134. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/mcp/tools-reference.md +0 -0
  135. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/docs/stylesheets/extra.css +0 -0
  136. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/README.md +0 -0
  137. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/basic/README.md +0 -0
  138. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/basic/async_example.py +0 -0
  139. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/basic/create_work.py +0 -0
  140. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/basic/error_handling.py +0 -0
  141. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/basic/list_accounts.py +0 -0
  142. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/basic/pagination.py +0 -0
  143. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/basic/search_users.py +0 -0
  144. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/integrations/cloud_functions/README.md +0 -0
  145. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/integrations/cloud_functions/main.py +0 -0
  146. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/integrations/cloud_functions/requirements.txt +0 -0
  147. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/integrations/fastapi/README.md +0 -0
  148. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/integrations/fastapi/main.py +0 -0
  149. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/integrations/fastapi/requirements.txt +0 -0
  150. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/integrations/flask/README.md +0 -0
  151. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/integrations/flask/app.py +0 -0
  152. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/examples/integrations/flask/requirements.txt +0 -0
  153. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/llms-ctx-full.txt +0 -0
  154. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/llms-ctx.txt +0 -0
  155. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/llms-mcp.txt +0 -0
  156. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/llms.txt +0 -0
  157. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/mkdocs.yml +0 -0
  158. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/openapi-beta.yaml +0 -0
  159. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/openapi-public.yaml +0 -0
  160. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/openapi-spec-corrections.yaml +0 -0
  161. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/scripts/build_ai_docs.py +0 -0
  162. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/scripts/setup-github-secrets.sh +0 -0
  163. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/__init__.py +0 -0
  164. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/client.py +0 -0
  165. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/config.py +0 -0
  166. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/exceptions.py +0 -0
  167. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/__init__.py +0 -0
  168. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/accounts.py +0 -0
  169. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/articles.py +0 -0
  170. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/artifacts.py +0 -0
  171. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/base.py +0 -0
  172. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/brands.py +0 -0
  173. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/code_changes.py +0 -0
  174. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/conversations.py +0 -0
  175. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/dev_users.py +0 -0
  176. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/engagements.py +0 -0
  177. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/groups.py +0 -0
  178. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/incidents.py +0 -0
  179. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/links.py +0 -0
  180. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/notifications.py +0 -0
  181. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/parts.py +0 -0
  182. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/preferences.py +0 -0
  183. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/question_answers.py +0 -0
  184. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/recommendations.py +0 -0
  185. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/rev_users.py +0 -0
  186. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/search.py +0 -0
  187. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/slas.py +0 -0
  188. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/sync.py +0 -0
  189. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/tags.py +0 -0
  190. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/tasks.py +0 -0
  191. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/timeline_entries.py +0 -0
  192. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/timeline_events.py +0 -0
  193. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/track_events.py +0 -0
  194. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/uoms.py +0 -0
  195. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/webhooks.py +0 -0
  196. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/widgets.py +0 -0
  197. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/models/works.py +0 -0
  198. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/py.typed +0 -0
  199. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/__init__.py +0 -0
  200. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/accounts.py +0 -0
  201. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/articles.py +0 -0
  202. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/artifacts.py +0 -0
  203. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/base.py +0 -0
  204. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/brands.py +0 -0
  205. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/code_changes.py +0 -0
  206. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/conversations.py +0 -0
  207. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/dev_users.py +0 -0
  208. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/engagements.py +0 -0
  209. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/groups.py +0 -0
  210. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/incidents.py +0 -0
  211. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/links.py +0 -0
  212. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/notifications.py +0 -0
  213. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/parts.py +0 -0
  214. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/preferences.py +0 -0
  215. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/question_answers.py +0 -0
  216. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/recommendations.py +0 -0
  217. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/rev_users.py +0 -0
  218. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/search.py +0 -0
  219. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/slas.py +0 -0
  220. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/tags.py +0 -0
  221. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/timeline_entries.py +0 -0
  222. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/track_events.py +0 -0
  223. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/uoms.py +0 -0
  224. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/webhooks.py +0 -0
  225. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/services/works.py +0 -0
  226. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/utils/__init__.py +0 -0
  227. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/utils/content_converter.py +0 -0
  228. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/utils/deprecation.py +0 -0
  229. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/utils/http.py +0 -0
  230. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/utils/logging.py +0 -0
  231. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev/utils/pagination.py +0 -0
  232. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/__init__.py +0 -0
  233. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/__main__.py +0 -0
  234. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/config.py +0 -0
  235. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/middleware/__init__.py +0 -0
  236. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/middleware/audit.py +0 -0
  237. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/middleware/auth.py +0 -0
  238. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/middleware/health.py +0 -0
  239. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/middleware/rate_limit.py +0 -0
  240. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/prompts/__init__.py +0 -0
  241. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/prompts/escalation.py +0 -0
  242. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/prompts/investigate.py +0 -0
  243. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/prompts/response.py +0 -0
  244. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/prompts/summarize.py +0 -0
  245. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/prompts/triage.py +0 -0
  246. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/resources/__init__.py +0 -0
  247. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/resources/account.py +0 -0
  248. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/resources/article.py +0 -0
  249. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/resources/conversation.py +0 -0
  250. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/resources/part.py +0 -0
  251. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/resources/server_info.py +0 -0
  252. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/resources/ticket.py +0 -0
  253. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/resources/user.py +0 -0
  254. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/server.py +0 -0
  255. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/__init__.py +0 -0
  256. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/accounts.py +0 -0
  257. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/conversations.py +0 -0
  258. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/engagements.py +0 -0
  259. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/groups.py +0 -0
  260. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/incidents.py +0 -0
  261. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/links.py +0 -0
  262. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/parts.py +0 -0
  263. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/recommendations.py +0 -0
  264. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/search.py +0 -0
  265. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/server_info.py +0 -0
  266. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/slas.py +0 -0
  267. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/tags.py +0 -0
  268. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/timeline.py +0 -0
  269. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/users.py +0 -0
  270. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/tools/works.py +0 -0
  271. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/utils/__init__.py +0 -0
  272. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/utils/errors.py +0 -0
  273. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/utils/formatting.py +0 -0
  274. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/src/devrev_mcp/utils/pagination.py +0 -0
  275. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/__init__.py +0 -0
  276. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/conftest.py +0 -0
  277. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/__init__.py +0 -0
  278. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/conftest.py +0 -0
  279. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_accounts_e2e.py +0 -0
  280. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_all_readonly_endpoints.py +0 -0
  281. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_articles_lifecycle.py +0 -0
  282. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_backwards_compatibility.py +0 -0
  283. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_contacts_e2e.py +0 -0
  284. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_core_services_phase1.py +0 -0
  285. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_extended_services_phase2.py +0 -0
  286. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_get_endpoints.py +0 -0
  287. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_issues_e2e.py +0 -0
  288. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_kb_articles_e2e.py +0 -0
  289. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_mcp_articles.py +0 -0
  290. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_ping.py +0 -0
  291. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_question_answers_e2e.py +0 -0
  292. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_readonly_endpoints.py +0 -0
  293. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_specialized_services_phase3.py +0 -0
  294. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_tickets_e2e.py +0 -0
  295. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/test_write_operations.py +0 -0
  296. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/utils/__init__.py +0 -0
  297. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/utils/cleanup.py +0 -0
  298. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/utils/constants.py +0 -0
  299. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/integration/utils/data_manager.py +0 -0
  300. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/performance/__init__.py +0 -0
  301. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/performance/test_articles_performance.py +0 -0
  302. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/__init__.py +0 -0
  303. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/__init__.py +0 -0
  304. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/conftest.py +0 -0
  305. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_audit.py +0 -0
  306. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_config.py +0 -0
  307. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_phase4_transport.py +0 -0
  308. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_prompts.py +0 -0
  309. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_resources.py +0 -0
  310. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_server_info.py +0 -0
  311. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_accounts.py +0 -0
  312. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_conversations.py +0 -0
  313. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_engagements.py +0 -0
  314. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_groups.py +0 -0
  315. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_incidents.py +0 -0
  316. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_links.py +0 -0
  317. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_parts.py +0 -0
  318. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_recommendations.py +0 -0
  319. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_search.py +0 -0
  320. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_slas.py +0 -0
  321. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_tags.py +0 -0
  322. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_timeline.py +0 -0
  323. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_users.py +0 -0
  324. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_tools_works.py +0 -0
  325. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/mcp/test_utils.py +0 -0
  326. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/models/__init__.py +0 -0
  327. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/models/test_user_state_regression.py +0 -0
  328. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/__init__.py +0 -0
  329. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/conftest.py +0 -0
  330. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_articles.py +0 -0
  331. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_async_services.py +0 -0
  332. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_brands.py +0 -0
  333. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_code_changes.py +0 -0
  334. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_conversations.py +0 -0
  335. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_engagements.py +0 -0
  336. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_groups.py +0 -0
  337. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_incidents.py +0 -0
  338. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_links.py +0 -0
  339. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_notifications.py +0 -0
  340. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_parts.py +0 -0
  341. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_preferences.py +0 -0
  342. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_question_answers.py +0 -0
  343. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_recommendations.py +0 -0
  344. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_search.py +0 -0
  345. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_slas.py +0 -0
  346. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_tags.py +0 -0
  347. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_timeline_entries.py +0 -0
  348. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_track_events.py +0 -0
  349. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_uoms.py +0 -0
  350. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_webhooks.py +0 -0
  351. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/services/test_works.py +0 -0
  352. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_articles_unified.py +0 -0
  353. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_artifacts.py +0 -0
  354. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_backward_compatibility.py +0 -0
  355. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_base_service.py +0 -0
  356. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_client.py +0 -0
  357. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_config.py +0 -0
  358. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_content_converter.py +0 -0
  359. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_deprecation.py +0 -0
  360. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_error_handling.py +0 -0
  361. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_exceptions.py +0 -0
  362. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_http.py +0 -0
  363. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_logging.py +0 -0
  364. {devrev_python_sdk-2.10.0 → devrev_python_sdk-2.10.1}/tests/unit/test_pagination.py +0 -0
@@ -52,7 +52,7 @@ jobs:
52
52
  fi
53
53
 
54
54
  - name: Upload coverage
55
- uses: codecov/codecov-action@v3
55
+ uses: codecov/codecov-action@v5
56
56
  with:
57
57
  files: ./coverage.xml
58
58
  fail_ci_if_error: false
@@ -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@v2
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@v7
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@v7
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.0
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
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "devrev-Python-SDK"
7
- version = "2.10.0"
7
+ version = "2.10.1"
8
8
  description = "A modern, type-safe Python SDK for the DevRev API"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -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 and list of articles.
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
- articles = await app.get_client().articles.list(request)
58
- items = serialize_models(list(articles))
59
- return {"count": len(items), "articles": items}
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 = [SetTagWithValue(id=tag_id) for tag_id in tags] if tags is not None else None
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 = [SetTagWithValue(id=tag_id) for tag_id in tags] if tags is not None else None
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
- mock_client.articles.list.return_value = []
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
- mock_client.articles.list.return_value = mock_articles
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.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/bb/9b/b1661026ff24bc641b76b78c5222d614776b0c085bcfdac9bd15a1cb4b35/authlib-1.6.6.tar.gz", hash = "sha256:45770e8e056d0f283451d9996fbb59b70d45722b45d854d58f32878d0a40c38e", size = 164894, upload-time = "2025-12-12T08:01:41.464Z" }
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/54/51/321e821856452f7386c4e9df866f196720b1ad0c5ea1623ea7399969ae3b/authlib-1.6.6-py2.py3-none-any.whl", hash = "sha256:7d9e9bc535c13974313a87f53e8430eb6ea3d1cf6ae4f6efcd793f2e949143fd", size = 244005, upload-time = "2025-12-12T08:01:40.209Z" },
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.4.1"
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"