devrev-Python-SDK 2.1.0__tar.gz → 2.1.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.
Files changed (253) hide show
  1. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.github/workflows/ci.yml +2 -2
  2. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.github/workflows/claude-code-review.yml +1 -1
  3. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.github/workflows/claude.yml +1 -1
  4. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.github/workflows/docs.yml +2 -2
  5. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.github/workflows/integration-tests.yml +7 -7
  6. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/PKG-INFO +3 -3
  7. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/changelog.md +17 -0
  8. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/mkdocs.yml +5 -2
  9. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/pyproject.toml +2 -2
  10. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/__init__.py +1 -1
  11. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/parts.py +9 -1
  12. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/rev_users.py +8 -1
  13. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/works.py +5 -1
  14. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_works.py +64 -0
  15. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/uv.lock +1 -1
  16. devrev_python_sdk-2.1.0/OPENAPI_SPEC_DISCREPANCIES.md +0 -1
  17. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.augment/agents/bug-fixer.md +0 -0
  18. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.augment/agents/builder.md +0 -0
  19. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.augment/agents/documentation.md +0 -0
  20. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.augment/agents/foreman.md +0 -0
  21. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.augment/agents/pr-review-boss.md +0 -0
  22. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.augment/agents/release-manager.md +0 -0
  23. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.augment/agents/simplifier.md +0 -0
  24. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.augment/agents/tester.md +0 -0
  25. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.augment/commands/foreman-work.md +0 -0
  26. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.augment/commands/release-prepare.md +0 -0
  27. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.augment/commands/review-start.md +0 -0
  28. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.augment/commands/simplify-code.md +0 -0
  29. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.augment/rules/code-quality.md +0 -0
  30. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.augment/rules/data-modeling.md +0 -0
  31. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.augment/rules/devrev-sdk.md +0 -0
  32. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.augment/rules/git-workflow.md +0 -0
  33. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.augment/rules/pull-requests.md +0 -0
  34. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.augment/rules/python-development.md +0 -0
  35. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.augment/rules/security.md +0 -0
  36. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.augment/rules/testing.md +0 -0
  37. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.env.sample +0 -0
  38. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  39. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  40. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  41. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.github/ISSUE_TEMPLATE/question.yml +0 -0
  42. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.github/dependabot.yml +0 -0
  43. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.github/pull_request_template.md +0 -0
  44. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.github/workflows/api-check.yml +0 -0
  45. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.github/workflows/release.yml +0 -0
  46. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.github/workflows/sync-openapi.yml +0 -0
  47. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.gitignore +0 -0
  48. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/.pre-commit-config.yaml +0 -0
  49. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/CODE_OF_CONDUCT.md +0 -0
  50. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/CONTRIBUTING.md +0 -0
  51. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/DEPRECATIONS.md +0 -0
  52. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/KNOWN_ISSUES.md +0 -0
  53. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/README.md +0 -0
  54. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/SECURITY.md +0 -0
  55. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/benchmarks/README.md +0 -0
  56. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/benchmarks/bench_http_client.py +0 -0
  57. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/benchmarks/bench_models.py +0 -0
  58. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/benchmarks/bench_pagination.py +0 -0
  59. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/benchmarks/conftest.py +0 -0
  60. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/cloudbuild.yaml +0 -0
  61. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/context7.json +0 -0
  62. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/beta/brands.md +0 -0
  63. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/beta/engagements.md +0 -0
  64. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/beta/incidents.md +0 -0
  65. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/beta/index.md +0 -0
  66. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/beta/question-answers.md +0 -0
  67. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/beta/recommendations.md +0 -0
  68. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/beta/search.md +0 -0
  69. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/beta/uoms.md +0 -0
  70. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/beta-api-differences.md +0 -0
  71. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/client.md +0 -0
  72. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/config.md +0 -0
  73. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/exceptions.md +0 -0
  74. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/index.md +0 -0
  75. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/models/accounts.md +0 -0
  76. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/models/base.md +0 -0
  77. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/models/index.md +0 -0
  78. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/models/users.md +0 -0
  79. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/models/works.md +0 -0
  80. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/services/accounts.md +0 -0
  81. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/services/articles.md +0 -0
  82. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/services/code-changes.md +0 -0
  83. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/services/conversations.md +0 -0
  84. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/services/dev-users.md +0 -0
  85. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/services/groups.md +0 -0
  86. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/services/index.md +0 -0
  87. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/services/links.md +0 -0
  88. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/services/parts.md +0 -0
  89. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/services/rev-users.md +0 -0
  90. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/services/slas.md +0 -0
  91. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/services/tags.md +0 -0
  92. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/services/timeline-entries.md +0 -0
  93. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/services/webhooks.md +0 -0
  94. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/api/services/works.md +0 -0
  95. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/examples/advanced.md +0 -0
  96. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/examples/basic.md +0 -0
  97. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/examples/beta-features.md +0 -0
  98. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/examples/index.md +0 -0
  99. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/examples/integrations.md +0 -0
  100. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/getting-started/authentication.md +0 -0
  101. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/getting-started/index.md +0 -0
  102. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/getting-started/installation.md +0 -0
  103. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/getting-started/quickstart.md +0 -0
  104. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/guides/beta-api.md +0 -0
  105. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/guides/compatibility.md +0 -0
  106. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/guides/configuration.md +0 -0
  107. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/guides/error-handling.md +0 -0
  108. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/guides/github-actions-setup.md +0 -0
  109. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/guides/index.md +0 -0
  110. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/guides/logging.md +0 -0
  111. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/guides/pagination.md +0 -0
  112. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/guides/sync-vs-async.md +0 -0
  113. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/guides/testing.md +0 -0
  114. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/guides/version-support.md +0 -0
  115. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/guides/write-integration-testing-strategy.md +0 -0
  116. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/docs/index.md +0 -0
  117. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/examples/README.md +0 -0
  118. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/examples/basic/README.md +0 -0
  119. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/examples/basic/async_example.py +0 -0
  120. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/examples/basic/create_work.py +0 -0
  121. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/examples/basic/error_handling.py +0 -0
  122. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/examples/basic/list_accounts.py +0 -0
  123. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/examples/basic/pagination.py +0 -0
  124. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/examples/basic/search_users.py +0 -0
  125. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/examples/integrations/cloud_functions/README.md +0 -0
  126. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/examples/integrations/cloud_functions/main.py +0 -0
  127. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/examples/integrations/cloud_functions/requirements.txt +0 -0
  128. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/examples/integrations/fastapi/README.md +0 -0
  129. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/examples/integrations/fastapi/main.py +0 -0
  130. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/examples/integrations/fastapi/requirements.txt +0 -0
  131. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/examples/integrations/flask/README.md +0 -0
  132. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/examples/integrations/flask/app.py +0 -0
  133. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/examples/integrations/flask/requirements.txt +0 -0
  134. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/llms-ctx-full.txt +0 -0
  135. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/llms-ctx.txt +0 -0
  136. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/llms.txt +0 -0
  137. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/openapi-beta.yaml +0 -0
  138. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/openapi-public.yaml +0 -0
  139. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/openapi-spec-corrections.yaml +0 -0
  140. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/scripts/build_ai_docs.py +0 -0
  141. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/scripts/setup-github-secrets.sh +0 -0
  142. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/client.py +0 -0
  143. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/config.py +0 -0
  144. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/exceptions.py +0 -0
  145. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/__init__.py +0 -0
  146. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/accounts.py +0 -0
  147. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/articles.py +0 -0
  148. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/base.py +0 -0
  149. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/brands.py +0 -0
  150. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/code_changes.py +0 -0
  151. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/conversations.py +0 -0
  152. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/dev_users.py +0 -0
  153. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/engagements.py +0 -0
  154. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/groups.py +0 -0
  155. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/incidents.py +0 -0
  156. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/links.py +0 -0
  157. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/notifications.py +0 -0
  158. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/preferences.py +0 -0
  159. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/question_answers.py +0 -0
  160. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/recommendations.py +0 -0
  161. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/search.py +0 -0
  162. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/slas.py +0 -0
  163. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/sync.py +0 -0
  164. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/tags.py +0 -0
  165. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/tasks.py +0 -0
  166. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/timeline_entries.py +0 -0
  167. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/timeline_events.py +0 -0
  168. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/track_events.py +0 -0
  169. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/uoms.py +0 -0
  170. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/webhooks.py +0 -0
  171. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/models/widgets.py +0 -0
  172. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/py.typed +0 -0
  173. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/__init__.py +0 -0
  174. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/accounts.py +0 -0
  175. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/articles.py +0 -0
  176. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/base.py +0 -0
  177. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/brands.py +0 -0
  178. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/code_changes.py +0 -0
  179. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/conversations.py +0 -0
  180. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/dev_users.py +0 -0
  181. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/engagements.py +0 -0
  182. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/groups.py +0 -0
  183. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/incidents.py +0 -0
  184. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/links.py +0 -0
  185. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/notifications.py +0 -0
  186. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/parts.py +0 -0
  187. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/preferences.py +0 -0
  188. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/question_answers.py +0 -0
  189. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/recommendations.py +0 -0
  190. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/rev_users.py +0 -0
  191. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/search.py +0 -0
  192. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/slas.py +0 -0
  193. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/tags.py +0 -0
  194. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/timeline_entries.py +0 -0
  195. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/track_events.py +0 -0
  196. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/uoms.py +0 -0
  197. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/webhooks.py +0 -0
  198. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/services/works.py +0 -0
  199. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/utils/__init__.py +0 -0
  200. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/utils/deprecation.py +0 -0
  201. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/utils/http.py +0 -0
  202. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/utils/logging.py +0 -0
  203. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/src/devrev/utils/pagination.py +0 -0
  204. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/__init__.py +0 -0
  205. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/conftest.py +0 -0
  206. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/integration/__init__.py +0 -0
  207. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/integration/conftest.py +0 -0
  208. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/integration/test_all_readonly_endpoints.py +0 -0
  209. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/integration/test_backwards_compatibility.py +0 -0
  210. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/integration/test_core_services_phase1.py +0 -0
  211. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/integration/test_extended_services_phase2.py +0 -0
  212. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/integration/test_get_endpoints.py +0 -0
  213. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/integration/test_ping.py +0 -0
  214. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/integration/test_readonly_endpoints.py +0 -0
  215. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/integration/test_specialized_services_phase3.py +0 -0
  216. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/integration/test_write_operations.py +0 -0
  217. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/integration/utils/__init__.py +0 -0
  218. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/integration/utils/cleanup.py +0 -0
  219. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/integration/utils/constants.py +0 -0
  220. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/integration/utils/data_manager.py +0 -0
  221. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/__init__.py +0 -0
  222. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/models/__init__.py +0 -0
  223. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/__init__.py +0 -0
  224. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/conftest.py +0 -0
  225. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_articles.py +0 -0
  226. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_async_services.py +0 -0
  227. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_brands.py +0 -0
  228. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_code_changes.py +0 -0
  229. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_conversations.py +0 -0
  230. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_engagements.py +0 -0
  231. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_groups.py +0 -0
  232. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_incidents.py +0 -0
  233. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_links.py +0 -0
  234. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_notifications.py +0 -0
  235. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_parts.py +0 -0
  236. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_preferences.py +0 -0
  237. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_question_answers.py +0 -0
  238. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_recommendations.py +0 -0
  239. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_search.py +0 -0
  240. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_slas.py +0 -0
  241. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_tags.py +0 -0
  242. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_timeline_entries.py +0 -0
  243. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_track_events.py +0 -0
  244. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_uoms.py +0 -0
  245. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/services/test_webhooks.py +0 -0
  246. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/test_base_service.py +0 -0
  247. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/test_client.py +0 -0
  248. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/test_config.py +0 -0
  249. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/test_deprecation.py +0 -0
  250. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/test_exceptions.py +0 -0
  251. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/test_http.py +0 -0
  252. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/test_logging.py +0 -0
  253. {devrev_python_sdk-2.1.0 → devrev_python_sdk-2.1.2}/tests/unit/test_pagination.py +0 -0
@@ -14,10 +14,10 @@ jobs:
14
14
  python-version: ['3.11', '3.12', '3.13']
15
15
 
16
16
  steps:
17
- - uses: actions/checkout@v4
17
+ - uses: actions/checkout@v6
18
18
 
19
19
  - name: Set up Python ${{ matrix.python-version }}
20
- uses: actions/setup-python@v5
20
+ uses: actions/setup-python@v6
21
21
  with:
22
22
  python-version: ${{ matrix.python-version }}
23
23
 
@@ -27,7 +27,7 @@ jobs:
27
27
 
28
28
  steps:
29
29
  - name: Checkout repository
30
- uses: actions/checkout@v4
30
+ uses: actions/checkout@v6
31
31
  with:
32
32
  fetch-depth: 1
33
33
 
@@ -26,7 +26,7 @@ jobs:
26
26
  actions: read # Required for Claude to read CI results on PRs
27
27
  steps:
28
28
  - name: Checkout repository
29
- uses: actions/checkout@v4
29
+ uses: actions/checkout@v6
30
30
  with:
31
31
  fetch-depth: 1
32
32
 
@@ -24,10 +24,10 @@ jobs:
24
24
  runs-on: ubuntu-latest
25
25
  steps:
26
26
  - name: Checkout
27
- uses: actions/checkout@v4
27
+ uses: actions/checkout@v6
28
28
 
29
29
  - name: Set up Python
30
- uses: actions/setup-python@v5
30
+ uses: actions/setup-python@v6
31
31
  with:
32
32
  python-version: '3.12'
33
33
 
@@ -36,10 +36,10 @@ jobs:
36
36
  python-version: ['3.11', '3.12', '3.13']
37
37
 
38
38
  steps:
39
- - uses: actions/checkout@v4
39
+ - uses: actions/checkout@v6
40
40
 
41
41
  - name: Set up Python ${{ matrix.python-version }}
42
- uses: actions/setup-python@v5
42
+ uses: actions/setup-python@v6
43
43
  with:
44
44
  python-version: ${{ matrix.python-version }}
45
45
 
@@ -77,10 +77,10 @@ jobs:
77
77
  issues: write
78
78
 
79
79
  steps:
80
- - uses: actions/checkout@v4
80
+ - uses: actions/checkout@v6
81
81
 
82
82
  - name: Set up Python
83
- uses: actions/setup-python@v5
83
+ uses: actions/setup-python@v6
84
84
  with:
85
85
  python-version: '3.11'
86
86
 
@@ -102,7 +102,7 @@ jobs:
102
102
 
103
103
  - name: Create issue on failure
104
104
  if: failure()
105
- uses: actions/github-script@v7
105
+ uses: actions/github-script@v8
106
106
  with:
107
107
  script: |
108
108
  github.rest.issues.create({
@@ -143,10 +143,10 @@ jobs:
143
143
  contents: read
144
144
 
145
145
  steps:
146
- - uses: actions/checkout@v4
146
+ - uses: actions/checkout@v6
147
147
 
148
148
  - name: Set up Python
149
- uses: actions/setup-python@v5
149
+ uses: actions/setup-python@v6
150
150
  with:
151
151
  python-version: '3.11'
152
152
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devrev-Python-SDK
3
- Version: 2.1.0
3
+ Version: 2.1.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
@@ -35,7 +35,7 @@ Requires-Dist: pytest-asyncio>=0.21.0; extra == 'all'
35
35
  Requires-Dist: pytest-benchmark>=4.0.0; extra == 'all'
36
36
  Requires-Dist: pytest-cov>=4.1.0; extra == 'all'
37
37
  Requires-Dist: pytest-mock>=3.12.0; extra == 'all'
38
- Requires-Dist: pytest<9.0.0,>=7.4.0; extra == 'all'
38
+ Requires-Dist: pytest<10.0.0,>=7.4.0; extra == 'all'
39
39
  Requires-Dist: pytest>=7.4.0; extra == 'all'
40
40
  Requires-Dist: respx>=0.20.0; extra == 'all'
41
41
  Requires-Dist: ruff>=0.1.0; extra == 'all'
@@ -49,7 +49,7 @@ Requires-Dist: pre-commit>=3.6.0; extra == 'dev'
49
49
  Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
50
50
  Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
51
51
  Requires-Dist: pytest-mock>=3.12.0; extra == 'dev'
52
- Requires-Dist: pytest<9.0.0,>=7.4.0; extra == 'dev'
52
+ Requires-Dist: pytest<10.0.0,>=7.4.0; extra == 'dev'
53
53
  Requires-Dist: respx>=0.20.0; extra == 'dev'
54
54
  Requires-Dist: ruff>=0.1.0; extra == 'dev'
55
55
  Provides-Extra: docs
@@ -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.1.2] - 2026-01-28
11
+
12
+ ### Fixed
13
+
14
+ - **Work.applies_to_part fails to parse API response** (#120) - The DevRev API returns `applies_to_part` as a rich `PartSummary` object in responses, not just a string ID. This caused `pydantic.ValidationError` when parsing API responses. Fixed by:
15
+ - Expanding `PartSummary` model to include `type`, `display_id`, `state`, and `owned_by` fields
16
+ - Changing `Work.applies_to_part` type from `str | None` to `PartSummary | str | None`
17
+ - This is fully backward compatible - string IDs are still accepted for requests
18
+
19
+ ## [2.1.1] - 2026-01-23
20
+
21
+ ### Fixed
22
+
23
+ - **RevUserState enum missing states** (#115) - Added missing `DEACTIVATED`, `LOCKED`, `SHADOW`, and `UNASSIGNED` states to the `RevUserState` enum to match the DevRev API `user-state` schema. This fixes Pydantic validation errors when the API returns users with these states.
24
+
10
25
  ## [2.0.0] - 2026-01-18
11
26
 
12
27
  🚀 **Major Release** - Beta API support, performance enhancements, and 100% integration test coverage!
@@ -320,6 +335,8 @@ This release marks the completion of all four development phases, providing a pr
320
335
 
321
336
  | Version | Date | Highlights |
322
337
  |---------|------|------------|
338
+ | 2.1.2 | 2026-01-28 | 🐛 Fix Work.applies_to_part parsing for API responses |
339
+ | 2.1.1 | 2026-01-23 | 🐛 Fix RevUserState enum missing states |
323
340
  | 2.0.0 | 2026-01-18 | 🚀 Beta API support, performance enhancements, breaking change |
324
341
  | 1.0.0 | 2026-01-13 | 🎉 First stable release - Production ready |
325
342
  | 0.1.0 | 2026-01-12 | Initial development release |
@@ -6,7 +6,9 @@ repo_name: mgmonteleone/py-dev-rev
6
6
  repo_url: https://github.com/mgmonteleone/py-dev-rev
7
7
  edit_uri: edit/main/docs/
8
8
 
9
- copyright: Copyright &copy; 2024-2026 Matthew G. Monteleone
9
+ copyright: >
10
+ Copyright &copy; 2024-2026 Matthew G. Monteleone |
11
+ Built with <a href="https://www.augmentcode.com/" target="_blank" rel="noopener">Augment Code</a> 🤖
10
12
 
11
13
  theme:
12
14
  name: material
@@ -108,11 +110,12 @@ markdown_extensions:
108
110
  - pymdownx.tilde
109
111
 
110
112
  extra:
113
+ generator: false
111
114
  social:
112
115
  - icon: fontawesome/brands/github
113
116
  link: https://github.com/mgmonteleone/py-dev-rev
114
117
  - icon: fontawesome/brands/python
115
- link: https://pypi.org/project/py-devrev/
118
+ link: https://pypi.org/project/devrev-python-sdk/
116
119
  version:
117
120
  provider: mike
118
121
  analytics:
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "devrev-Python-SDK"
7
- version = "2.1.0"
7
+ version = "2.1.2"
8
8
  description = "A modern, type-safe Python SDK for the DevRev API"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -33,7 +33,7 @@ dependencies = [
33
33
 
34
34
  [project.optional-dependencies]
35
35
  dev = [
36
- "pytest>=7.4.0,<9.0.0",
36
+ "pytest>=7.4.0,<10.0.0",
37
37
  "pytest-cov>=4.1.0",
38
38
  "pytest-asyncio>=0.21.0",
39
39
  "pytest-mock>=3.12.0",
@@ -29,7 +29,7 @@ from devrev.utils.http import (
29
29
  )
30
30
  from devrev.utils.logging import JSONFormatter, configure_logging
31
31
 
32
- __version__ = "2.1.0"
32
+ __version__ = "2.1.1"
33
33
  __all__ = [
34
34
  # Version
35
35
  "__version__",
@@ -38,10 +38,18 @@ class Part(DevRevResponseModel):
38
38
 
39
39
 
40
40
  class PartSummary(DevRevResponseModel):
41
- """Summary of a Part."""
41
+ """Summary of a Part.
42
+
43
+ This model represents the part object returned in work item responses.
44
+ The API returns a rich object with type, display_id, name, etc.
45
+ """
42
46
 
43
47
  id: str = Field(..., description="Part ID")
48
+ type: str | None = Field(default=None, description="Part type (product, capability, etc.)")
49
+ display_id: str | None = Field(default=None, description="Display ID (e.g., PROD-1)")
44
50
  name: str | None = Field(default=None, description="Part name")
51
+ state: str | None = Field(default=None, description="Part state (active, archived, etc.)")
52
+ owned_by: list[UserSummary] | None = Field(default=None, description="Part owners")
45
53
 
46
54
 
47
55
  class PartsCreateRequest(DevRevBaseModel):
@@ -24,10 +24,17 @@ from devrev.models.base import (
24
24
 
25
25
 
26
26
  class RevUserState(str, Enum):
27
- """Rev user state enumeration."""
27
+ """Rev user state enumeration.
28
+
29
+ Values match the DevRev API 'user-state' schema.
30
+ """
28
31
 
29
32
  ACTIVE = "active"
33
+ DEACTIVATED = "deactivated"
30
34
  DELETED = "deleted"
35
+ LOCKED = "locked"
36
+ SHADOW = "shadow"
37
+ UNASSIGNED = "unassigned"
31
38
 
32
39
 
33
40
  class RevUser(DevRevResponseModel):
@@ -24,6 +24,7 @@ from devrev.models.base import (
24
24
  TagWithValue,
25
25
  UserSummary,
26
26
  )
27
+ from devrev.models.parts import PartSummary
27
28
 
28
29
 
29
30
  class WorkType(str, Enum):
@@ -83,7 +84,10 @@ class Work(DevRevResponseModel):
83
84
  reported_by: list[UserSummary] | None = Field(
84
85
  default=None, description="Users who reported this work"
85
86
  )
86
- applies_to_part: str | None = Field(default=None, description="Part this work applies to")
87
+ applies_to_part: PartSummary | str | None = Field(
88
+ default=None,
89
+ description="Part this work applies to. API returns a PartSummary object in responses.",
90
+ )
87
91
  stage: StageInfo | None = Field(default=None, description="Work stage")
88
92
  tags: list[TagWithValue] | None = Field(default=None, description="Work tags")
89
93
  priority: str | None = Field(default=None, description="Issue priority")
@@ -143,3 +143,67 @@ class TestWorksService:
143
143
  )
144
144
 
145
145
  assert isinstance(result, Work)
146
+
147
+ def test_work_with_applies_to_part_as_object(
148
+ self,
149
+ mock_http_client: MagicMock,
150
+ sample_work_data: dict[str, Any],
151
+ ) -> None:
152
+ """Test that applies_to_part can be an object (as returned by the API).
153
+
154
+ The DevRev API returns applies_to_part as a PartSummary object in responses,
155
+ not just a string ID. This test validates that the model correctly parses
156
+ the object format.
157
+ """
158
+ sample_work_data["applies_to_part"] = {
159
+ "type": "product",
160
+ "display_id": "PROD-1",
161
+ "id": "don:core:dvrv-us-1:devo/org123:product/1",
162
+ "name": "Test Product",
163
+ "state": "active",
164
+ "owned_by": [
165
+ {
166
+ "type": "sys_user",
167
+ "display_id": "SYSU-1",
168
+ "display_name": "devrev-bot",
169
+ "full_name": "DevRev Bot",
170
+ "id": "don:identity:dvrv-us-1:devo/org123:sysu/1",
171
+ }
172
+ ],
173
+ }
174
+ mock_http_client.post.return_value = create_mock_response({"work": sample_work_data})
175
+
176
+ service = WorksService(mock_http_client)
177
+ result = service.get("don:core:issue:123")
178
+
179
+ assert isinstance(result, Work)
180
+ assert result.applies_to_part is not None
181
+ # The applies_to_part should be parsed as a PartSummary object
182
+ from devrev.models.parts import PartSummary
183
+
184
+ assert isinstance(result.applies_to_part, PartSummary)
185
+ assert result.applies_to_part.id == "don:core:dvrv-us-1:devo/org123:product/1"
186
+ assert result.applies_to_part.name == "Test Product"
187
+ assert result.applies_to_part.type == "product"
188
+ assert result.applies_to_part.display_id == "PROD-1"
189
+ assert result.applies_to_part.state == "active"
190
+ # Verify owned_by is parsed correctly
191
+ assert result.applies_to_part.owned_by is not None
192
+ assert isinstance(result.applies_to_part.owned_by, list)
193
+ assert len(result.applies_to_part.owned_by) == 1
194
+ assert result.applies_to_part.owned_by[0].id == "don:identity:dvrv-us-1:devo/org123:sysu/1"
195
+
196
+ def test_work_with_applies_to_part_as_string(
197
+ self,
198
+ mock_http_client: MagicMock,
199
+ sample_work_data: dict[str, Any],
200
+ ) -> None:
201
+ """Test that applies_to_part can also be a string (backward compatibility)."""
202
+ sample_work_data["applies_to_part"] = "don:core:dvrv-us-1:devo/org123:product/1"
203
+ mock_http_client.post.return_value = create_mock_response({"work": sample_work_data})
204
+
205
+ service = WorksService(mock_http_client)
206
+ result = service.get("don:core:issue:123")
207
+
208
+ assert isinstance(result, Work)
209
+ assert result.applies_to_part == "don:core:dvrv-us-1:devo/org123:product/1"
@@ -464,7 +464,7 @@ wheels = [
464
464
 
465
465
  [[package]]
466
466
  name = "devrev-python-sdk"
467
- version = "2.1.0"
467
+ version = "2.1.1"
468
468
  source = { editable = "." }
469
469
  dependencies = [
470
470
  { name = "httpx" },
@@ -1 +0,0 @@
1
- No schema discrepancies found!