arbi 0.1.1__tar.gz → 0.4.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 (220) hide show
  1. arbi-0.4.1/.release-please-manifest.json +3 -0
  2. {arbi-0.1.1 → arbi-0.4.1}/CHANGELOG.md +76 -0
  3. {arbi-0.1.1 → arbi-0.4.1}/PKG-INFO +4 -5
  4. {arbi-0.1.1 → arbi-0.4.1}/README.md +2 -3
  5. {arbi-0.1.1 → arbi-0.4.1}/api.md +30 -10
  6. {arbi-0.1.1 → arbi-0.4.1}/pyproject.toml +59 -3
  7. {arbi-0.1.1 → arbi-0.4.1}/requirements-dev.lock +6 -4
  8. {arbi-0.1.1 → arbi-0.4.1}/requirements.lock +6 -3
  9. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/__init__.py +3 -1
  10. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_base_client.py +12 -12
  11. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_client.py +8 -8
  12. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_compat.py +48 -48
  13. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_models.py +51 -45
  14. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_qs.py +7 -7
  15. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_streaming.py +4 -6
  16. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_types.py +53 -12
  17. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_utils/__init__.py +9 -2
  18. arbi-0.4.1/src/arbi/_utils/_compat.py +45 -0
  19. arbi-0.4.1/src/arbi/_utils/_datetime_parse.py +136 -0
  20. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_utils/_transform.py +13 -3
  21. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_utils/_typing.py +6 -1
  22. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_utils/_utils.py +5 -6
  23. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_version.py +1 -1
  24. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/resources/api/__init__.py +0 -14
  25. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/resources/api/api.py +3 -35
  26. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/resources/api/assistant.py +30 -18
  27. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/resources/api/configs.py +41 -33
  28. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/resources/api/conversation/conversation.py +97 -12
  29. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/resources/api/conversation/user.py +5 -5
  30. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/resources/api/document/annotation.py +26 -18
  31. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/resources/api/document/document.py +213 -34
  32. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/resources/api/health.py +129 -11
  33. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/resources/api/tag.py +39 -27
  34. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/resources/api/user/__init__.py +14 -0
  35. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/resources/api/user/settings.py +40 -20
  36. arbi-0.4.1/src/arbi/resources/api/user/subscription.py +230 -0
  37. arbi-0.4.1/src/arbi/resources/api/user/user.py +969 -0
  38. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/resources/api/workspace.py +268 -48
  39. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/__init__.py +18 -7
  40. arbi-0.4.1/src/arbi/types/api/assistant_query_params.py +91 -0
  41. arbi-0.4.1/src/arbi/types/api/assistant_retrieve_params.py +91 -0
  42. arbi-0.4.1/src/arbi/types/api/config_create_params.py +110 -0
  43. arbi-0.4.1/src/arbi/types/api/config_retrieve_response.py +142 -0
  44. arbi-0.4.1/src/arbi/types/api/conversation_retrieve_message_response.py +99 -0
  45. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/conversation_retrieve_threads_response.py +29 -2
  46. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/document/annotation_create_params.py +5 -1
  47. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/document/annotation_update_params.py +5 -1
  48. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/document_date_extractor_llm_config.py +3 -3
  49. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/document_date_extractor_llm_config_param.py +3 -3
  50. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/document_update_params.py +2 -0
  51. arbi-0.4.1/src/arbi/types/api/document_upload_from_url_params.py +26 -0
  52. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/document_upload_params.py +7 -4
  53. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/document_view_params.py +5 -1
  54. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/embedder_config.py +12 -0
  55. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/embedder_config_param.py +12 -0
  56. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/health_check_app_response.py +6 -0
  57. arbi-0.4.1/src/arbi/types/api/health_retrieve_status_response.py +45 -0
  58. arbi-0.4.1/src/arbi/types/api/health_retrieve_version_response.py +8 -0
  59. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/query_llm_config.py +1 -1
  60. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/query_llm_config_param.py +1 -1
  61. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/tag_apply_to_docs_params.py +3 -2
  62. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/tag_create_params.py +5 -1
  63. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/tag_remove_from_docs_params.py +3 -2
  64. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/tag_update_params.py +5 -1
  65. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/title_llm_config.py +1 -1
  66. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/title_llm_config_param.py +1 -1
  67. arbi-0.4.1/src/arbi/types/api/user/__init__.py +9 -0
  68. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/user/setting_retrieve_response.py +25 -2
  69. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/user/setting_update_params.py +16 -3
  70. arbi-0.4.1/src/arbi/types/api/user/subscription_create_params.py +13 -0
  71. arbi-0.4.1/src/arbi/types/api/user/subscription_create_response.py +9 -0
  72. arbi-0.4.1/src/arbi/types/api/user/subscription_retrieve_response.py +39 -0
  73. arbi-0.4.1/src/arbi/types/api/user_change_password_params.py +16 -0
  74. arbi-0.1.1/src/arbi/types/api/sso_rotate_passcode_response.py → arbi-0.4.1/src/arbi/types/api/user_change_password_response.py +3 -3
  75. arbi-0.1.1/src/arbi/types/api/sso_login_params.py → arbi-0.4.1/src/arbi/types/api/user_check_sso_status_params.py +3 -6
  76. arbi-0.1.1/src/arbi/types/api/user_response.py → arbi-0.4.1/src/arbi/types/api/user_check_sso_status_response.py +4 -6
  77. arbi-0.1.1/src/arbi/types/api/sso_invite_params.py → arbi-0.4.1/src/arbi/types/api/user_invite_params.py +2 -2
  78. arbi-0.4.1/src/arbi/types/api/user_invite_response.py +9 -0
  79. arbi-0.4.1/src/arbi/types/api/user_list_products_response.py +33 -0
  80. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/user_login_params.py +4 -1
  81. arbi-0.4.1/src/arbi/types/api/user_login_response.py +8 -0
  82. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/user_register_params.py +6 -3
  83. arbi-0.4.1/src/arbi/types/api/user_verify_email_params.py +11 -0
  84. arbi-0.4.1/src/arbi/types/api/user_verify_email_response.py +9 -0
  85. arbi-0.4.1/src/arbi/types/api/workspace_copy_params.py +21 -0
  86. arbi-0.4.1/src/arbi/types/api/workspace_copy_response.py +25 -0
  87. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/workspace_create_protected_params.py +2 -0
  88. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/workspace_get_stats_response.py +6 -2
  89. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/workspace_get_users_response.py +5 -1
  90. arbi-0.4.1/src/arbi/types/api/workspace_response.py +50 -0
  91. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/workspace_share_params.py +5 -1
  92. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/workspace_update_params.py +7 -1
  93. {arbi-0.1.1 → arbi-0.4.1}/tests/api_resources/api/document/test_annotation.py +4 -0
  94. {arbi-0.1.1 → arbi-0.4.1}/tests/api_resources/api/test_assistant.py +36 -4
  95. {arbi-0.1.1 → arbi-0.4.1}/tests/api_resources/api/test_configs.py +56 -2
  96. {arbi-0.1.1 → arbi-0.4.1}/tests/api_resources/api/test_conversation.py +103 -0
  97. {arbi-0.1.1 → arbi-0.4.1}/tests/api_resources/api/test_document.py +202 -24
  98. {arbi-0.1.1 → arbi-0.4.1}/tests/api_resources/api/test_health.py +114 -0
  99. {arbi-0.1.1 → arbi-0.4.1}/tests/api_resources/api/test_tag.py +30 -8
  100. arbi-0.4.1/tests/api_resources/api/test_user.py +689 -0
  101. {arbi-0.1.1 → arbi-0.4.1}/tests/api_resources/api/test_workspace.py +229 -24
  102. {arbi-0.1.1 → arbi-0.4.1}/tests/api_resources/api/user/test_settings.py +6 -0
  103. arbi-0.4.1/tests/api_resources/api/user/test_subscription.py +166 -0
  104. {arbi-0.1.1 → arbi-0.4.1}/tests/test_client.py +204 -211
  105. {arbi-0.1.1 → arbi-0.4.1}/tests/test_models.py +24 -24
  106. {arbi-0.1.1 → arbi-0.4.1}/tests/test_transform.py +17 -10
  107. arbi-0.4.1/tests/test_utils/test_datetime_parse.py +110 -0
  108. {arbi-0.1.1 → arbi-0.4.1}/tests/utils.py +13 -5
  109. arbi-0.1.1/.release-please-manifest.json +0 -3
  110. arbi-0.1.1/mypy.ini +0 -50
  111. arbi-0.1.1/src/arbi/resources/api/sso.py +0 -333
  112. arbi-0.1.1/src/arbi/resources/api/user/user.py +0 -532
  113. arbi-0.1.1/src/arbi/types/api/assistant_query_params.py +0 -59
  114. arbi-0.1.1/src/arbi/types/api/assistant_retrieve_params.py +0 -59
  115. arbi-0.1.1/src/arbi/types/api/config_create_params.py +0 -45
  116. arbi-0.1.1/src/arbi/types/api/config_retrieve_response.py +0 -46
  117. arbi-0.1.1/src/arbi/types/api/sso_invite_response.py +0 -11
  118. arbi-0.1.1/src/arbi/types/api/sso_login_response.py +0 -15
  119. arbi-0.1.1/src/arbi/types/api/token.py +0 -13
  120. arbi-0.1.1/src/arbi/types/api/user/__init__.py +0 -6
  121. arbi-0.1.1/src/arbi/types/api/workspace_response.py +0 -24
  122. arbi-0.1.1/tests/api_resources/api/test_sso.py +0 -246
  123. arbi-0.1.1/tests/api_resources/api/test_user.py +0 -413
  124. {arbi-0.1.1 → arbi-0.4.1}/.gitignore +0 -0
  125. {arbi-0.1.1 → arbi-0.4.1}/CONTRIBUTING.md +0 -0
  126. {arbi-0.1.1 → arbi-0.4.1}/LICENSE +0 -0
  127. {arbi-0.1.1 → arbi-0.4.1}/SECURITY.md +0 -0
  128. {arbi-0.1.1 → arbi-0.4.1}/bin/check-release-environment +0 -0
  129. {arbi-0.1.1 → arbi-0.4.1}/bin/publish-pypi +0 -0
  130. {arbi-0.1.1 → arbi-0.4.1}/examples/.keep +0 -0
  131. {arbi-0.1.1 → arbi-0.4.1}/noxfile.py +0 -0
  132. {arbi-0.1.1 → arbi-0.4.1}/release-please-config.json +0 -0
  133. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_constants.py +0 -0
  134. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_exceptions.py +0 -0
  135. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_files.py +0 -0
  136. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_resource.py +0 -0
  137. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_response.py +0 -0
  138. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_utils/_logs.py +0 -0
  139. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_utils/_proxy.py +0 -0
  140. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_utils/_reflection.py +0 -0
  141. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_utils/_resources_proxy.py +0 -0
  142. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_utils/_streams.py +0 -0
  143. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/_utils/_sync.py +0 -0
  144. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/lib/.keep +0 -0
  145. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/py.typed +0 -0
  146. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/resources/__init__.py +0 -0
  147. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/resources/api/conversation/__init__.py +0 -0
  148. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/resources/api/document/__init__.py +0 -0
  149. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/__init__.py +0 -0
  150. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/chunker_config_param.py +0 -0
  151. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/config_create_response.py +0 -0
  152. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/config_delete_response.py +0 -0
  153. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/config_get_versions_response.py +0 -0
  154. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/conversation/__init__.py +0 -0
  155. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/conversation/user_add_params.py +0 -0
  156. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/conversation/user_add_response.py +0 -0
  157. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/conversation/user_remove_params.py +0 -0
  158. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/conversation/user_remove_response.py +0 -0
  159. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/conversation_delete_message_response.py +0 -0
  160. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/conversation_delete_response.py +0 -0
  161. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/conversation_share_response.py +0 -0
  162. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/conversation_update_title_params.py +0 -0
  163. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/conversation_update_title_response.py +0 -0
  164. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/doc_response.py +0 -0
  165. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/document/__init__.py +0 -0
  166. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/document/annotation_delete_response.py +0 -0
  167. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/document/doc_tag_response.py +0 -0
  168. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/document_delete_response.py +0 -0
  169. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/document_get_parsed_response.py +0 -0
  170. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/document_get_tags_response.py +0 -0
  171. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/document_update_response.py +0 -0
  172. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/health_check_models_response.py +0 -0
  173. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/health_check_services_response.py +0 -0
  174. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/health_get_models_response.py +0 -0
  175. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/model_citation_config.py +0 -0
  176. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/model_citation_config_param.py +0 -0
  177. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/parser_config_param.py +0 -0
  178. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/reranker_config.py +0 -0
  179. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/reranker_config_param.py +0 -0
  180. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/retriever_config.py +0 -0
  181. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/retriever_config_param.py +0 -0
  182. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/tag_apply_to_docs_response.py +0 -0
  183. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/tag_create_response.py +0 -0
  184. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/tag_delete_response.py +0 -0
  185. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/tag_get_docs_response.py +0 -0
  186. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/tag_remove_from_docs_response.py +0 -0
  187. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/tag_update_response.py +0 -0
  188. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/user_list_workspaces_response.py +0 -0
  189. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/user_logout_response.py +0 -0
  190. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/workspace_delete_response.py +0 -0
  191. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/workspace_get_conversations_response.py +0 -0
  192. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/workspace_get_doctags_response.py +0 -0
  193. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/workspace_get_documents_response.py +0 -0
  194. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/workspace_get_tags_response.py +0 -0
  195. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/workspace_remove_user_params.py +0 -0
  196. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/workspace_remove_user_response.py +0 -0
  197. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/api/workspace_share_response.py +0 -0
  198. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/chunk.py +0 -0
  199. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/chunk_metadata.py +0 -0
  200. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/chunk_metadata_param.py +0 -0
  201. {arbi-0.1.1 → arbi-0.4.1}/src/arbi/types/chunk_param.py +0 -0
  202. {arbi-0.1.1 → arbi-0.4.1}/tests/__init__.py +0 -0
  203. {arbi-0.1.1 → arbi-0.4.1}/tests/api_resources/__init__.py +0 -0
  204. {arbi-0.1.1 → arbi-0.4.1}/tests/api_resources/api/__init__.py +0 -0
  205. {arbi-0.1.1 → arbi-0.4.1}/tests/api_resources/api/conversation/__init__.py +0 -0
  206. {arbi-0.1.1 → arbi-0.4.1}/tests/api_resources/api/conversation/test_user.py +0 -0
  207. {arbi-0.1.1 → arbi-0.4.1}/tests/api_resources/api/document/__init__.py +0 -0
  208. {arbi-0.1.1 → arbi-0.4.1}/tests/api_resources/api/user/__init__.py +0 -0
  209. {arbi-0.1.1 → arbi-0.4.1}/tests/api_resources/test_api.py +0 -0
  210. {arbi-0.1.1 → arbi-0.4.1}/tests/conftest.py +0 -0
  211. {arbi-0.1.1 → arbi-0.4.1}/tests/sample_file.txt +0 -0
  212. {arbi-0.1.1 → arbi-0.4.1}/tests/test_deepcopy.py +0 -0
  213. {arbi-0.1.1 → arbi-0.4.1}/tests/test_extract_files.py +0 -0
  214. {arbi-0.1.1 → arbi-0.4.1}/tests/test_files.py +0 -0
  215. {arbi-0.1.1 → arbi-0.4.1}/tests/test_qs.py +0 -0
  216. {arbi-0.1.1 → arbi-0.4.1}/tests/test_required_args.py +0 -0
  217. {arbi-0.1.1 → arbi-0.4.1}/tests/test_response.py +0 -0
  218. {arbi-0.1.1 → arbi-0.4.1}/tests/test_streaming.py +0 -0
  219. {arbi-0.1.1 → arbi-0.4.1}/tests/test_utils/test_proxy.py +0 -0
  220. {arbi-0.1.1 → arbi-0.4.1}/tests/test_utils/test_typing.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.4.1"
3
+ }
@@ -1,5 +1,81 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.1 (2025-11-04)
4
+
5
+ Full Changelog: [v0.4.0...v0.4.1](https://github.com/arbitrationcity/arbi-python/compare/v0.4.0...v0.4.1)
6
+
7
+ ### Chores
8
+
9
+ * **internal:** grammar fix (it's -> its) ([355e525](https://github.com/arbitrationcity/arbi-python/commit/355e5251f95c5cc04dc5f1c9e6e200eb94496aec))
10
+
11
+ ## 0.4.0 (2025-11-03)
12
+
13
+ Full Changelog: [v0.3.1...v0.4.0](https://github.com/arbitrationcity/arbi-python/compare/v0.3.1...v0.4.0)
14
+
15
+ ### Features
16
+
17
+ * Feat/stripe-backend ([952850c](https://github.com/arbitrationcity/arbi-python/commit/952850c48f36859194f79398269af95bf1092f6f))
18
+
19
+ ## 0.3.1 (2025-10-31)
20
+
21
+ Full Changelog: [v0.3.0...v0.3.1](https://github.com/arbitrationcity/arbi-python/compare/v0.3.0...v0.3.1)
22
+
23
+ ### Chores
24
+
25
+ * **internal/tests:** avoid race condition with implicit client cleanup ([8bd34d5](https://github.com/arbitrationcity/arbi-python/commit/8bd34d51fcfa6975cf8034617b13dd3024a13f1f))
26
+
27
+ ## 0.3.0 (2025-10-30)
28
+
29
+ Full Changelog: [v0.2.1...v0.3.0](https://github.com/arbitrationcity/arbi-python/compare/v0.2.1...v0.3.0)
30
+
31
+ ### Features
32
+
33
+ * Add workspace document copy endpoint ([1c9fd95](https://github.com/arbitrationcity/arbi-python/commit/1c9fd95ebd51302eb2d39a526d1cfdf8d29c3feb))
34
+ * DRAFT: Client-side key generation with JWE encryption ([8ab2fa9](https://github.com/arbitrationcity/arbi-python/commit/8ab2fa931309cec57317aa6894bce47025da447f))
35
+
36
+
37
+ ### Bug Fixes
38
+
39
+ * **client:** close streams without requiring full consumption ([9b32ba6](https://github.com/arbitrationcity/arbi-python/commit/9b32ba6c3335273feaed012dbf0d8d7b147e5342))
40
+
41
+ ## 0.2.1 (2025-10-18)
42
+
43
+ Full Changelog: [v0.2.0...v0.2.1](https://github.com/arbitrationcity/arbi-python/compare/v0.2.0...v0.2.1)
44
+
45
+ ### Chores
46
+
47
+ * bump `httpx-aiohttp` version to 0.1.9 ([a499053](https://github.com/arbitrationcity/arbi-python/commit/a4990530e19afda079fec1702da7b10e5ee8a145))
48
+
49
+ ## 0.2.0 (2025-10-13)
50
+
51
+ Full Changelog: [v0.1.1...v0.2.0](https://github.com/arbitrationcity/arbi-python/compare/v0.1.1...v0.2.0)
52
+
53
+ ### Features
54
+
55
+ * DRAFT add email verification requirement for local user registration ([ba914da](https://github.com/arbitrationcity/arbi-python/commit/ba914dae291c8b58df7bfd3be5d01e27cdf456b7))
56
+ * implement public workspaces with deployment key encryption ([9b25ecd](https://github.com/arbitrationcity/arbi-python/commit/9b25ecdced445221b56e1bd45caa44af7039d76d))
57
+ * improve future compat with pydantic v3 ([be64906](https://github.com/arbitrationcity/arbi-python/commit/be64906d140b119239ab09b23564ada62ed4e7f4))
58
+ * Llamaindex agent featureflag ([0464f7a](https://github.com/arbitrationcity/arbi-python/commit/0464f7af287125546d87896d6316d3b34aa1c9a1))
59
+ * **types:** replace List[str] with SequenceNotStr in params ([bcc155b](https://github.com/arbitrationcity/arbi-python/commit/bcc155b44acb974cc0d72cf8ce20918f59f5c5e5))
60
+
61
+
62
+ ### Bug Fixes
63
+
64
+ * avoid newer type syntax ([2008b65](https://github.com/arbitrationcity/arbi-python/commit/2008b653d1baba6824f79da6183fdbdf2543f605))
65
+ * **compat:** compat with `pydantic<2.8.0` when using additional fields ([0bc83c2](https://github.com/arbitrationcity/arbi-python/commit/0bc83c26322edf26307d9d1bfd4f26d0e4d131b3))
66
+
67
+
68
+ ### Chores
69
+
70
+ * do not install brew dependencies in ./scripts/bootstrap by default ([6dfd710](https://github.com/arbitrationcity/arbi-python/commit/6dfd710821d6a0f81b42c65c40fdc91631769681))
71
+ * **internal:** add Sequence related utils ([07de38e](https://github.com/arbitrationcity/arbi-python/commit/07de38eb8a532b5e82dfbbcf840afbdd55c38ac6))
72
+ * **internal:** detect missing future annotations with ruff ([9740de5](https://github.com/arbitrationcity/arbi-python/commit/9740de55f5783fc2a8e9d0823ed09ec677b9a2c0))
73
+ * **internal:** move mypy configurations to `pyproject.toml` file ([3907f70](https://github.com/arbitrationcity/arbi-python/commit/3907f7002aef0fa434c3cf024a36d1ec58b3d79d))
74
+ * **internal:** update pydantic dependency ([89b016f](https://github.com/arbitrationcity/arbi-python/commit/89b016f708b3dd946973de2d9047688faf199f9d))
75
+ * **internal:** update pyright exclude list ([7c356cf](https://github.com/arbitrationcity/arbi-python/commit/7c356cf1faea5ec7c787b961a07a4630f60b2805))
76
+ * **tests:** simplify `get_platform` test ([b011a08](https://github.com/arbitrationcity/arbi-python/commit/b011a08fb145b126dbadb6847a1f43d8a8ee062b))
77
+ * **types:** change optional parameter type from NotGiven to Omit ([4d1fbc7](https://github.com/arbitrationcity/arbi-python/commit/4d1fbc7bfeb2ef9a88f3458ae9ec7f5a0f932a8f))
78
+
3
79
  ## 0.1.1 (2025-08-26)
4
80
 
5
81
  Full Changelog: [v0.1.0...v0.1.1](https://github.com/arbitrationcity/arbi-python/compare/v0.1.0...v0.1.1)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arbi
3
- Version: 0.1.1
3
+ Version: 0.4.1
4
4
  Summary: The official Python library for the arbi API
5
5
  Project-URL: Homepage, https://github.com/arbitrationcity/arbi-python
6
6
  Project-URL: Repository, https://github.com/arbitrationcity/arbi-python
@@ -30,7 +30,7 @@ Requires-Dist: sniffio
30
30
  Requires-Dist: typing-extensions<5,>=4.10
31
31
  Provides-Extra: aiohttp
32
32
  Requires-Dist: aiohttp; extra == 'aiohttp'
33
- Requires-Dist: httpx-aiohttp>=0.1.8; extra == 'aiohttp'
33
+ Requires-Dist: httpx-aiohttp>=0.1.9; extra == 'aiohttp'
34
34
  Description-Content-Type: text/markdown
35
35
 
36
36
  # Arbi Python API library
@@ -146,10 +146,9 @@ from arbi import Arbi
146
146
 
147
147
  client = Arbi()
148
148
 
149
- config = client.api.configs.create(
150
- document_date_extractor_llm={},
149
+ client.api.user.settings.update(
150
+ subscription={},
151
151
  )
152
- print(config.document_date_extractor_llm)
153
152
  ```
154
153
 
155
154
  ## Handling errors
@@ -111,10 +111,9 @@ from arbi import Arbi
111
111
 
112
112
  client = Arbi()
113
113
 
114
- config = client.api.configs.create(
115
- document_date_extractor_llm={},
114
+ client.api.user.settings.update(
115
+ subscription={},
116
116
  )
117
- print(config.document_date_extractor_llm)
118
117
  ```
119
118
 
120
119
  ## Handling errors
@@ -15,17 +15,29 @@ Methods:
15
15
  Types:
16
16
 
17
17
  ```python
18
- from arbi.types.api import Token, UserResponse, UserListWorkspacesResponse, UserLogoutResponse
18
+ from arbi.types.api import (
19
+ UserChangePasswordResponse,
20
+ UserCheckSSOStatusResponse,
21
+ UserInviteResponse,
22
+ UserListProductsResponse,
23
+ UserListWorkspacesResponse,
24
+ UserLoginResponse,
25
+ UserLogoutResponse,
26
+ UserVerifyEmailResponse,
27
+ )
19
28
  ```
20
29
 
21
30
  Methods:
22
31
 
32
+ - <code title="post /api/user/change_password">client.api.user.<a href="./src/arbi/resources/api/user/user.py">change_password</a>(\*\*<a href="src/arbi/types/api/user_change_password_params.py">params</a>) -> <a href="./src/arbi/types/api/user_change_password_response.py">UserChangePasswordResponse</a></code>
33
+ - <code title="post /api/user/sso-status">client.api.user.<a href="./src/arbi/resources/api/user/user.py">check_sso_status</a>(\*\*<a href="src/arbi/types/api/user_check_sso_status_params.py">params</a>) -> <a href="./src/arbi/types/api/user_check_sso_status_response.py">UserCheckSSOStatusResponse</a></code>
34
+ - <code title="post /api/user/invite">client.api.user.<a href="./src/arbi/resources/api/user/user.py">invite</a>(\*\*<a href="src/arbi/types/api/user_invite_params.py">params</a>) -> <a href="./src/arbi/types/api/user_invite_response.py">UserInviteResponse</a></code>
35
+ - <code title="get /api/user/products">client.api.user.<a href="./src/arbi/resources/api/user/user.py">list_products</a>() -> <a href="./src/arbi/types/api/user_list_products_response.py">UserListProductsResponse</a></code>
23
36
  - <code title="get /api/user/workspaces">client.api.user.<a href="./src/arbi/resources/api/user/user.py">list_workspaces</a>() -> <a href="./src/arbi/types/api/user_list_workspaces_response.py">UserListWorkspacesResponse</a></code>
24
- - <code title="post /api/user/login">client.api.user.<a href="./src/arbi/resources/api/user/user.py">login</a>(\*\*<a href="src/arbi/types/api/user_login_params.py">params</a>) -> <a href="./src/arbi/types/api/token.py">Token</a></code>
37
+ - <code title="post /api/user/login">client.api.user.<a href="./src/arbi/resources/api/user/user.py">login</a>(\*\*<a href="src/arbi/types/api/user_login_params.py">params</a>) -> <a href="./src/arbi/types/api/user_login_response.py">UserLoginResponse</a></code>
25
38
  - <code title="post /api/user/logout">client.api.user.<a href="./src/arbi/resources/api/user/user.py">logout</a>() -> <a href="./src/arbi/types/api/user_logout_response.py">UserLogoutResponse</a></code>
26
- - <code title="post /api/user/token_refresh">client.api.user.<a href="./src/arbi/resources/api/user/user.py">refresh_token</a>() -> <a href="./src/arbi/types/api/token.py">Token</a></code>
27
- - <code title="post /api/user/register">client.api.user.<a href="./src/arbi/resources/api/user/user.py">register</a>(\*\*<a href="src/arbi/types/api/user_register_params.py">params</a>) -> <a href="./src/arbi/types/api/user_response.py">UserResponse</a></code>
28
- - <code title="get /api/user/me">client.api.user.<a href="./src/arbi/resources/api/user/user.py">retrieve_me</a>() -> <a href="./src/arbi/types/api/user_response.py">UserResponse</a></code>
39
+ - <code title="post /api/user/register">client.api.user.<a href="./src/arbi/resources/api/user/user.py">register</a>(\*\*<a href="src/arbi/types/api/user_register_params.py">params</a>) -> object</code>
40
+ - <code title="post /api/user/verify-email">client.api.user.<a href="./src/arbi/resources/api/user/user.py">verify_email</a>(\*\*<a href="src/arbi/types/api/user_verify_email_params.py">params</a>) -> <a href="./src/arbi/types/api/user_verify_email_response.py">UserVerifyEmailResponse</a></code>
29
41
 
30
42
  ### Settings
31
43
 
@@ -40,19 +52,18 @@ Methods:
40
52
  - <code title="get /api/user/settings">client.api.user.settings.<a href="./src/arbi/resources/api/user/settings.py">retrieve</a>() -> <a href="./src/arbi/types/api/user/setting_retrieve_response.py">SettingRetrieveResponse</a></code>
41
53
  - <code title="patch /api/user/settings">client.api.user.settings.<a href="./src/arbi/resources/api/user/settings.py">update</a>(\*\*<a href="src/arbi/types/api/user/setting_update_params.py">params</a>) -> None</code>
42
54
 
43
- ## SSO
55
+ ### Subscription
44
56
 
45
57
  Types:
46
58
 
47
59
  ```python
48
- from arbi.types.api import SSOInviteResponse, SSOLoginResponse, SSORotatePasscodeResponse
60
+ from arbi.types.api.user import SubscriptionCreateResponse, SubscriptionRetrieveResponse
49
61
  ```
50
62
 
51
63
  Methods:
52
64
 
53
- - <code title="post /api/sso/invite">client.api.sso.<a href="./src/arbi/resources/api/sso.py">invite</a>(\*\*<a href="src/arbi/types/api/sso_invite_params.py">params</a>) -> <a href="./src/arbi/types/api/sso_invite_response.py">SSOInviteResponse</a></code>
54
- - <code title="post /api/sso/login">client.api.sso.<a href="./src/arbi/resources/api/sso.py">login</a>(\*\*<a href="src/arbi/types/api/sso_login_params.py">params</a>) -> <a href="./src/arbi/types/api/sso_login_response.py">SSOLoginResponse</a></code>
55
- - <code title="post /api/sso/rotate_passcode">client.api.sso.<a href="./src/arbi/resources/api/sso.py">rotate_passcode</a>() -> <a href="./src/arbi/types/api/sso_rotate_passcode_response.py">SSORotatePasscodeResponse</a></code>
65
+ - <code title="post /api/user/subscription">client.api.user.subscription.<a href="./src/arbi/resources/api/user/subscription.py">create</a>(\*\*<a href="src/arbi/types/api/user/subscription_create_params.py">params</a>) -> <a href="./src/arbi/types/api/user/subscription_create_response.py">SubscriptionCreateResponse</a></code>
66
+ - <code title="get /api/user/subscription">client.api.user.subscription.<a href="./src/arbi/resources/api/user/subscription.py">retrieve</a>() -> <a href="./src/arbi/types/api/user/subscription_retrieve_response.py">SubscriptionRetrieveResponse</a></code>
56
67
 
57
68
  ## Workspace
58
69
 
@@ -62,6 +73,7 @@ Types:
62
73
  from arbi.types.api import (
63
74
  WorkspaceResponse,
64
75
  WorkspaceDeleteResponse,
76
+ WorkspaceCopyResponse,
65
77
  WorkspaceGetConversationsResponse,
66
78
  WorkspaceGetDoctagsResponse,
67
79
  WorkspaceGetDocumentsResponse,
@@ -77,6 +89,7 @@ Methods:
77
89
 
78
90
  - <code title="patch /api/workspace/{workspace_ext_id}">client.api.workspace.<a href="./src/arbi/resources/api/workspace.py">update</a>(workspace_ext_id, \*\*<a href="src/arbi/types/api/workspace_update_params.py">params</a>) -> <a href="./src/arbi/types/api/workspace_response.py">WorkspaceResponse</a></code>
79
91
  - <code title="delete /api/workspace/{workspace_ext_id}">client.api.workspace.<a href="./src/arbi/resources/api/workspace.py">delete</a>(workspace_ext_id) -> <a href="./src/arbi/types/api/workspace_delete_response.py">WorkspaceDeleteResponse</a></code>
92
+ - <code title="post /api/workspace/{workspace_ext_id}/copy">client.api.workspace.<a href="./src/arbi/resources/api/workspace.py">copy</a>(workspace_ext_id, \*\*<a href="src/arbi/types/api/workspace_copy_params.py">params</a>) -> <a href="./src/arbi/types/api/workspace_copy_response.py">WorkspaceCopyResponse</a></code>
80
93
  - <code title="post /api/workspace/create_protected">client.api.workspace.<a href="./src/arbi/resources/api/workspace.py">create_protected</a>(\*\*<a href="src/arbi/types/api/workspace_create_protected_params.py">params</a>) -> <a href="./src/arbi/types/api/workspace_response.py">WorkspaceResponse</a></code>
81
94
  - <code title="get /api/workspace/{workspace_ext_id}/conversations">client.api.workspace.<a href="./src/arbi/resources/api/workspace.py">get_conversations</a>(workspace_ext_id) -> <a href="./src/arbi/types/api/workspace_get_conversations_response.py">WorkspaceGetConversationsResponse</a></code>
82
95
  - <code title="get /api/workspace/{workspace_ext_id}/doctags">client.api.workspace.<a href="./src/arbi/resources/api/workspace.py">get_doctags</a>(workspace_ext_id) -> <a href="./src/arbi/types/api/workspace_get_doctags_response.py">WorkspaceGetDoctagsResponse</a></code>
@@ -110,6 +123,7 @@ Methods:
110
123
  - <code title="get /api/document/{document_ext_id}/parsed-{stage}">client.api.document.<a href="./src/arbi/resources/api/document/document.py">get_parsed</a>(stage, \*, document_ext_id) -> <a href="./src/arbi/types/api/document_get_parsed_response.py">DocumentGetParsedResponse</a></code>
111
124
  - <code title="get /api/document/{doc_ext_id}/tags">client.api.document.<a href="./src/arbi/resources/api/document/document.py">get_tags</a>(doc_ext_id) -> <a href="./src/arbi/types/api/document_get_tags_response.py">DocumentGetTagsResponse</a></code>
112
125
  - <code title="post /api/document/upload">client.api.document.<a href="./src/arbi/resources/api/document/document.py">upload</a>(\*\*<a href="src/arbi/types/api/document_upload_params.py">params</a>) -> object</code>
126
+ - <code title="post /api/document/upload-url">client.api.document.<a href="./src/arbi/resources/api/document/document.py">upload_from_url</a>(\*\*<a href="src/arbi/types/api/document_upload_from_url_params.py">params</a>) -> object</code>
113
127
  - <code title="get /api/document/{document_ext_id}/view">client.api.document.<a href="./src/arbi/resources/api/document/document.py">view</a>(document_ext_id, \*\*<a href="src/arbi/types/api/document_view_params.py">params</a>) -> object</code>
114
128
 
115
129
  ### Annotation
@@ -134,6 +148,7 @@ Types:
134
148
  from arbi.types.api import (
135
149
  ConversationDeleteResponse,
136
150
  ConversationDeleteMessageResponse,
151
+ ConversationRetrieveMessageResponse,
137
152
  ConversationRetrieveThreadsResponse,
138
153
  ConversationShareResponse,
139
154
  ConversationUpdateTitleResponse,
@@ -144,6 +159,7 @@ Methods:
144
159
 
145
160
  - <code title="delete /api/conversation/{conversation_ext_id}">client.api.conversation.<a href="./src/arbi/resources/api/conversation/conversation.py">delete</a>(conversation_ext_id) -> <a href="./src/arbi/types/api/conversation_delete_response.py">ConversationDeleteResponse</a></code>
146
161
  - <code title="delete /api/conversation/message/{message_ext_id}">client.api.conversation.<a href="./src/arbi/resources/api/conversation/conversation.py">delete_message</a>(message_ext_id) -> <a href="./src/arbi/types/api/conversation_delete_message_response.py">ConversationDeleteMessageResponse</a></code>
162
+ - <code title="get /api/conversation/message/{message_ext_id}">client.api.conversation.<a href="./src/arbi/resources/api/conversation/conversation.py">retrieve_message</a>(message_ext_id) -> <a href="./src/arbi/types/api/conversation_retrieve_message_response.py">ConversationRetrieveMessageResponse</a></code>
147
163
  - <code title="get /api/conversation/{conversation_ext_id}/threads">client.api.conversation.<a href="./src/arbi/resources/api/conversation/conversation.py">retrieve_threads</a>(conversation_ext_id) -> <a href="./src/arbi/types/api/conversation_retrieve_threads_response.py">ConversationRetrieveThreadsResponse</a></code>
148
164
  - <code title="post /api/conversation/{conversation_ext_id}/share">client.api.conversation.<a href="./src/arbi/resources/api/conversation/conversation.py">share</a>(conversation_ext_id) -> <a href="./src/arbi/types/api/conversation_share_response.py">ConversationShareResponse</a></code>
149
165
  - <code title="patch /api/conversation/{conversation_ext_id}/title">client.api.conversation.<a href="./src/arbi/resources/api/conversation/conversation.py">update_title</a>(conversation_ext_id, \*\*<a href="src/arbi/types/api/conversation_update_title_params.py">params</a>) -> <a href="./src/arbi/types/api/conversation_update_title_response.py">ConversationUpdateTitleResponse</a></code>
@@ -184,6 +200,8 @@ from arbi.types.api import (
184
200
  HealthCheckModelsResponse,
185
201
  HealthCheckServicesResponse,
186
202
  HealthGetModelsResponse,
203
+ HealthRetrieveStatusResponse,
204
+ HealthRetrieveVersionResponse,
187
205
  )
188
206
  ```
189
207
 
@@ -193,6 +211,8 @@ Methods:
193
211
  - <code title="get /api/health/remote-models">client.api.health.<a href="./src/arbi/resources/api/health.py">check_models</a>() -> <a href="./src/arbi/types/api/health_check_models_response.py">HealthCheckModelsResponse</a></code>
194
212
  - <code title="get /api/health/services">client.api.health.<a href="./src/arbi/resources/api/health.py">check_services</a>() -> <a href="./src/arbi/types/api/health_check_services_response.py">HealthCheckServicesResponse</a></code>
195
213
  - <code title="get /api/health/models">client.api.health.<a href="./src/arbi/resources/api/health.py">get_models</a>() -> <a href="./src/arbi/types/api/health_get_models_response.py">HealthGetModelsResponse</a></code>
214
+ - <code title="get /api/health/">client.api.health.<a href="./src/arbi/resources/api/health.py">retrieve_status</a>() -> <a href="./src/arbi/types/api/health_retrieve_status_response.py">HealthRetrieveStatusResponse</a></code>
215
+ - <code title="get /api/health/version">client.api.health.<a href="./src/arbi/resources/api/health.py">retrieve_version</a>() -> <a href="./src/arbi/types/api/health_retrieve_version_response.py">HealthRetrieveVersionResponse</a></code>
196
216
 
197
217
  ## Tag
198
218
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "arbi"
3
- version = "0.1.1"
3
+ version = "0.4.1"
4
4
  description = "The official Python library for the arbi API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -39,7 +39,7 @@ Homepage = "https://github.com/arbitrationcity/arbi-python"
39
39
  Repository = "https://github.com/arbitrationcity/arbi-python"
40
40
 
41
41
  [project.optional-dependencies]
42
- aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.8"]
42
+ aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.9"]
43
43
 
44
44
  [tool.rye]
45
45
  managed = true
@@ -56,7 +56,6 @@ dev-dependencies = [
56
56
  "dirty-equals>=0.6.0",
57
57
  "importlib-metadata>=6.7.0",
58
58
  "rich>=13.7.1",
59
- "nest_asyncio==1.6.0",
60
59
  "pytest-xdist>=3.6.1",
61
60
  ]
62
61
 
@@ -148,6 +147,7 @@ exclude = [
148
147
  "_dev",
149
148
  ".venv",
150
149
  ".nox",
150
+ ".git",
151
151
  ]
152
152
 
153
153
  reportImplicitOverride = true
@@ -156,6 +156,58 @@ reportOverlappingOverload = false
156
156
  reportImportCycles = false
157
157
  reportPrivateUsage = false
158
158
 
159
+ [tool.mypy]
160
+ pretty = true
161
+ show_error_codes = true
162
+
163
+ # Exclude _files.py because mypy isn't smart enough to apply
164
+ # the correct type narrowing and as this is an internal module
165
+ # it's fine to just use Pyright.
166
+ #
167
+ # We also exclude our `tests` as mypy doesn't always infer
168
+ # types correctly and Pyright will still catch any type errors.
169
+ exclude = ['src/arbi/_files.py', '_dev/.*.py', 'tests/.*']
170
+
171
+ strict_equality = true
172
+ implicit_reexport = true
173
+ check_untyped_defs = true
174
+ no_implicit_optional = true
175
+
176
+ warn_return_any = true
177
+ warn_unreachable = true
178
+ warn_unused_configs = true
179
+
180
+ # Turn these options off as it could cause conflicts
181
+ # with the Pyright options.
182
+ warn_unused_ignores = false
183
+ warn_redundant_casts = false
184
+
185
+ disallow_any_generics = true
186
+ disallow_untyped_defs = true
187
+ disallow_untyped_calls = true
188
+ disallow_subclassing_any = true
189
+ disallow_incomplete_defs = true
190
+ disallow_untyped_decorators = true
191
+ cache_fine_grained = true
192
+
193
+ # By default, mypy reports an error if you assign a value to the result
194
+ # of a function call that doesn't return anything. We do this in our test
195
+ # cases:
196
+ # ```
197
+ # result = ...
198
+ # assert result is None
199
+ # ```
200
+ # Changing this codegen to make mypy happy would increase complexity
201
+ # and would not be worth it.
202
+ disable_error_code = "func-returns-value,overload-cannot-match"
203
+
204
+ # https://github.com/python/mypy/issues/12162
205
+ [[tool.mypy.overrides]]
206
+ module = "black.files.*"
207
+ ignore_errors = true
208
+ ignore_missing_imports = true
209
+
210
+
159
211
  [tool.ruff]
160
212
  line-length = 120
161
213
  output-format = "grouped"
@@ -172,6 +224,8 @@ select = [
172
224
  "B",
173
225
  # remove unused imports
174
226
  "F401",
227
+ # check for missing future annotations
228
+ "FA102",
175
229
  # bare except statements
176
230
  "E722",
177
231
  # unused arguments
@@ -194,6 +248,8 @@ unfixable = [
194
248
  "T203",
195
249
  ]
196
250
 
251
+ extend-safe-fixes = ["FA102"]
252
+
197
253
  [tool.ruff.lint.flake8-tidy-imports.banned-api]
198
254
  "functools.lru_cache".msg = "This function does not retain type information for the wrapped function's arguments; The `lru_cache` function from `_utils` should be used instead"
199
255
 
@@ -56,7 +56,7 @@ httpx==0.28.1
56
56
  # via arbi
57
57
  # via httpx-aiohttp
58
58
  # via respx
59
- httpx-aiohttp==0.1.8
59
+ httpx-aiohttp==0.1.9
60
60
  # via arbi
61
61
  idna==3.4
62
62
  # via anyio
@@ -75,7 +75,6 @@ multidict==6.4.4
75
75
  mypy==1.14.1
76
76
  mypy-extensions==1.0.0
77
77
  # via mypy
78
- nest-asyncio==1.6.0
79
78
  nodeenv==1.8.0
80
79
  # via pyright
81
80
  nox==2023.4.22
@@ -89,9 +88,9 @@ pluggy==1.5.0
89
88
  propcache==0.3.1
90
89
  # via aiohttp
91
90
  # via yarl
92
- pydantic==2.10.3
91
+ pydantic==2.11.9
93
92
  # via arbi
94
- pydantic-core==2.27.1
93
+ pydantic-core==2.33.2
95
94
  # via pydantic
96
95
  pygments==2.18.0
97
96
  # via rich
@@ -127,6 +126,9 @@ typing-extensions==4.12.2
127
126
  # via pydantic
128
127
  # via pydantic-core
129
128
  # via pyright
129
+ # via typing-inspection
130
+ typing-inspection==0.4.1
131
+ # via pydantic
130
132
  virtualenv==20.24.5
131
133
  # via nox
132
134
  yarl==1.20.0
@@ -43,7 +43,7 @@ httpcore==1.0.9
43
43
  httpx==0.28.1
44
44
  # via arbi
45
45
  # via httpx-aiohttp
46
- httpx-aiohttp==0.1.8
46
+ httpx-aiohttp==0.1.9
47
47
  # via arbi
48
48
  idna==3.4
49
49
  # via anyio
@@ -55,9 +55,9 @@ multidict==6.4.4
55
55
  propcache==0.3.1
56
56
  # via aiohttp
57
57
  # via yarl
58
- pydantic==2.10.3
58
+ pydantic==2.11.9
59
59
  # via arbi
60
- pydantic-core==2.27.1
60
+ pydantic-core==2.33.2
61
61
  # via pydantic
62
62
  sniffio==1.3.0
63
63
  # via anyio
@@ -68,5 +68,8 @@ typing-extensions==4.12.2
68
68
  # via multidict
69
69
  # via pydantic
70
70
  # via pydantic-core
71
+ # via typing-inspection
72
+ typing-inspection==0.4.1
73
+ # via pydantic
71
74
  yarl==1.20.0
72
75
  # via aiohttp
@@ -3,7 +3,7 @@
3
3
  import typing as _t
4
4
 
5
5
  from . import types
6
- from ._types import NOT_GIVEN, Omit, NoneType, NotGiven, Transport, ProxiesTypes
6
+ from ._types import NOT_GIVEN, Omit, NoneType, NotGiven, Transport, ProxiesTypes, omit, not_given
7
7
  from ._utils import file_from_path
8
8
  from ._client import Arbi, Client, Stream, Timeout, AsyncArbi, Transport, AsyncClient, AsyncStream, RequestOptions
9
9
  from ._models import BaseModel
@@ -38,7 +38,9 @@ __all__ = [
38
38
  "ProxiesTypes",
39
39
  "NotGiven",
40
40
  "NOT_GIVEN",
41
+ "not_given",
41
42
  "Omit",
43
+ "omit",
42
44
  "ArbiError",
43
45
  "APIError",
44
46
  "APIStatusError",
@@ -42,7 +42,6 @@ from . import _exceptions
42
42
  from ._qs import Querystring
43
43
  from ._files import to_httpx_files, async_to_httpx_files
44
44
  from ._types import (
45
- NOT_GIVEN,
46
45
  Body,
47
46
  Omit,
48
47
  Query,
@@ -57,9 +56,10 @@ from ._types import (
57
56
  RequestOptions,
58
57
  HttpxRequestFiles,
59
58
  ModelBuilderProtocol,
59
+ not_given,
60
60
  )
61
61
  from ._utils import is_dict, is_list, asyncify, is_given, lru_cache, is_mapping
62
- from ._compat import PYDANTIC_V2, model_copy, model_dump
62
+ from ._compat import PYDANTIC_V1, model_copy, model_dump
63
63
  from ._models import GenericModel, FinalRequestOptions, validate_type, construct_type
64
64
  from ._response import (
65
65
  APIResponse,
@@ -145,9 +145,9 @@ class PageInfo:
145
145
  def __init__(
146
146
  self,
147
147
  *,
148
- url: URL | NotGiven = NOT_GIVEN,
149
- json: Body | NotGiven = NOT_GIVEN,
150
- params: Query | NotGiven = NOT_GIVEN,
148
+ url: URL | NotGiven = not_given,
149
+ json: Body | NotGiven = not_given,
150
+ params: Query | NotGiven = not_given,
151
151
  ) -> None:
152
152
  self.url = url
153
153
  self.json = json
@@ -232,7 +232,7 @@ class BaseSyncPage(BasePage[_T], Generic[_T]):
232
232
  model: Type[_T],
233
233
  options: FinalRequestOptions,
234
234
  ) -> None:
235
- if PYDANTIC_V2 and getattr(self, "__pydantic_private__", None) is None:
235
+ if (not PYDANTIC_V1) and getattr(self, "__pydantic_private__", None) is None:
236
236
  self.__pydantic_private__ = {}
237
237
 
238
238
  self._model = model
@@ -320,7 +320,7 @@ class BaseAsyncPage(BasePage[_T], Generic[_T]):
320
320
  client: AsyncAPIClient,
321
321
  options: FinalRequestOptions,
322
322
  ) -> None:
323
- if PYDANTIC_V2 and getattr(self, "__pydantic_private__", None) is None:
323
+ if (not PYDANTIC_V1) and getattr(self, "__pydantic_private__", None) is None:
324
324
  self.__pydantic_private__ = {}
325
325
 
326
326
  self._model = model
@@ -595,7 +595,7 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
595
595
  # we internally support defining a temporary header to override the
596
596
  # default `cast_to` type for use with `.with_raw_response` and `.with_streaming_response`
597
597
  # see _response.py for implementation details
598
- override_cast_to = headers.pop(OVERRIDE_CAST_TO_HEADER, NOT_GIVEN)
598
+ override_cast_to = headers.pop(OVERRIDE_CAST_TO_HEADER, not_given)
599
599
  if is_given(override_cast_to):
600
600
  options.headers = headers
601
601
  return cast(Type[ResponseT], override_cast_to)
@@ -825,7 +825,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
825
825
  version: str,
826
826
  base_url: str | URL,
827
827
  max_retries: int = DEFAULT_MAX_RETRIES,
828
- timeout: float | Timeout | None | NotGiven = NOT_GIVEN,
828
+ timeout: float | Timeout | None | NotGiven = not_given,
829
829
  http_client: httpx.Client | None = None,
830
830
  custom_headers: Mapping[str, str] | None = None,
831
831
  custom_query: Mapping[str, object] | None = None,
@@ -1356,7 +1356,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1356
1356
  base_url: str | URL,
1357
1357
  _strict_response_validation: bool,
1358
1358
  max_retries: int = DEFAULT_MAX_RETRIES,
1359
- timeout: float | Timeout | None | NotGiven = NOT_GIVEN,
1359
+ timeout: float | Timeout | None | NotGiven = not_given,
1360
1360
  http_client: httpx.AsyncClient | None = None,
1361
1361
  custom_headers: Mapping[str, str] | None = None,
1362
1362
  custom_query: Mapping[str, object] | None = None,
@@ -1818,8 +1818,8 @@ def make_request_options(
1818
1818
  extra_query: Query | None = None,
1819
1819
  extra_body: Body | None = None,
1820
1820
  idempotency_key: str | None = None,
1821
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
1822
- post_parser: PostParser | NotGiven = NOT_GIVEN,
1821
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
1822
+ post_parser: PostParser | NotGiven = not_given,
1823
1823
  ) -> RequestOptions:
1824
1824
  """Create a dict of type RequestOptions without keys of NotGiven values."""
1825
1825
  options: RequestOptions = {}
@@ -3,7 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import os
6
- from typing import Any, Union, Mapping
6
+ from typing import Any, Mapping
7
7
  from typing_extensions import Self, override
8
8
 
9
9
  import httpx
@@ -11,13 +11,13 @@ import httpx
11
11
  from . import _exceptions
12
12
  from ._qs import Querystring
13
13
  from ._types import (
14
- NOT_GIVEN,
15
14
  Omit,
16
15
  Timeout,
17
16
  NotGiven,
18
17
  Transport,
19
18
  ProxiesTypes,
20
19
  RequestOptions,
20
+ not_given,
21
21
  )
22
22
  from ._utils import is_given, get_async_library
23
23
  from ._version import __version__
@@ -46,7 +46,7 @@ class Arbi(SyncAPIClient):
46
46
  *,
47
47
  api_key: str | None = None,
48
48
  base_url: str | httpx.URL | None = None,
49
- timeout: Union[float, Timeout, None, NotGiven] = NOT_GIVEN,
49
+ timeout: float | Timeout | None | NotGiven = not_given,
50
50
  max_retries: int = DEFAULT_MAX_RETRIES,
51
51
  default_headers: Mapping[str, str] | None = None,
52
52
  default_query: Mapping[str, object] | None = None,
@@ -121,9 +121,9 @@ class Arbi(SyncAPIClient):
121
121
  *,
122
122
  api_key: str | None = None,
123
123
  base_url: str | httpx.URL | None = None,
124
- timeout: float | Timeout | None | NotGiven = NOT_GIVEN,
124
+ timeout: float | Timeout | None | NotGiven = not_given,
125
125
  http_client: httpx.Client | None = None,
126
- max_retries: int | NotGiven = NOT_GIVEN,
126
+ max_retries: int | NotGiven = not_given,
127
127
  default_headers: Mapping[str, str] | None = None,
128
128
  set_default_headers: Mapping[str, str] | None = None,
129
129
  default_query: Mapping[str, object] | None = None,
@@ -214,7 +214,7 @@ class AsyncArbi(AsyncAPIClient):
214
214
  *,
215
215
  api_key: str | None = None,
216
216
  base_url: str | httpx.URL | None = None,
217
- timeout: Union[float, Timeout, None, NotGiven] = NOT_GIVEN,
217
+ timeout: float | Timeout | None | NotGiven = not_given,
218
218
  max_retries: int = DEFAULT_MAX_RETRIES,
219
219
  default_headers: Mapping[str, str] | None = None,
220
220
  default_query: Mapping[str, object] | None = None,
@@ -289,9 +289,9 @@ class AsyncArbi(AsyncAPIClient):
289
289
  *,
290
290
  api_key: str | None = None,
291
291
  base_url: str | httpx.URL | None = None,
292
- timeout: float | Timeout | None | NotGiven = NOT_GIVEN,
292
+ timeout: float | Timeout | None | NotGiven = not_given,
293
293
  http_client: httpx.AsyncClient | None = None,
294
- max_retries: int | NotGiven = NOT_GIVEN,
294
+ max_retries: int | NotGiven = not_given,
295
295
  default_headers: Mapping[str, str] | None = None,
296
296
  set_default_headers: Mapping[str, str] | None = None,
297
297
  default_query: Mapping[str, object] | None = None,