payi 0.1.0a116__tar.gz → 0.1.0a118__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.

Potentially problematic release.


This version of payi might be problematic. Click here for more details.

Files changed (204) hide show
  1. payi-0.1.0a118/.release-please-manifest.json +3 -0
  2. {payi-0.1.0a116 → payi-0.1.0a118}/CHANGELOG.md +16 -0
  3. {payi-0.1.0a116 → payi-0.1.0a118}/PKG-INFO +1 -1
  4. {payi-0.1.0a116 → payi-0.1.0a118}/pyproject.toml +1 -2
  5. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_version.py +1 -1
  6. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/lib/BedrockInstrumentor.py +2 -0
  7. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/lib/instrument.py +16 -7
  8. {payi-0.1.0a116 → payi-0.1.0a118}/tests/test_client.py +6 -47
  9. payi-0.1.0a116/.release-please-manifest.json +0 -3
  10. {payi-0.1.0a116 → payi-0.1.0a118}/.gitignore +0 -0
  11. {payi-0.1.0a116 → payi-0.1.0a118}/CONTRIBUTING.md +0 -0
  12. {payi-0.1.0a116 → payi-0.1.0a118}/LICENSE +0 -0
  13. {payi-0.1.0a116 → payi-0.1.0a118}/README.md +0 -0
  14. {payi-0.1.0a116 → payi-0.1.0a118}/SECURITY.md +0 -0
  15. {payi-0.1.0a116 → payi-0.1.0a118}/api.md +0 -0
  16. {payi-0.1.0a116 → payi-0.1.0a118}/bin/check-release-environment +0 -0
  17. {payi-0.1.0a116 → payi-0.1.0a118}/bin/publish-pypi +0 -0
  18. {payi-0.1.0a116 → payi-0.1.0a118}/examples/.keep +0 -0
  19. {payi-0.1.0a116 → payi-0.1.0a118}/noxfile.py +0 -0
  20. {payi-0.1.0a116 → payi-0.1.0a118}/release-please-config.json +0 -0
  21. {payi-0.1.0a116 → payi-0.1.0a118}/requirements-dev.lock +0 -0
  22. {payi-0.1.0a116 → payi-0.1.0a118}/requirements.lock +0 -0
  23. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/__init__.py +0 -0
  24. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_base_client.py +0 -0
  25. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_client.py +0 -0
  26. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_compat.py +0 -0
  27. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_constants.py +0 -0
  28. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_exceptions.py +0 -0
  29. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_files.py +0 -0
  30. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_models.py +0 -0
  31. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_qs.py +0 -0
  32. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_resource.py +0 -0
  33. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_response.py +0 -0
  34. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_streaming.py +0 -0
  35. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_types.py +0 -0
  36. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_utils/__init__.py +0 -0
  37. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_utils/_compat.py +0 -0
  38. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_utils/_datetime_parse.py +0 -0
  39. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_utils/_logs.py +0 -0
  40. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_utils/_proxy.py +0 -0
  41. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_utils/_reflection.py +0 -0
  42. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_utils/_resources_proxy.py +0 -0
  43. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_utils/_streams.py +0 -0
  44. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_utils/_sync.py +0 -0
  45. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_utils/_transform.py +0 -0
  46. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_utils/_typing.py +0 -0
  47. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/_utils/_utils.py +0 -0
  48. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/lib/.keep +0 -0
  49. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/lib/AnthropicInstrumentor.py +0 -0
  50. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/lib/GoogleGenAiInstrumentor.py +0 -0
  51. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/lib/OpenAIInstrumentor.py +0 -0
  52. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/lib/Stopwatch.py +0 -0
  53. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/lib/VertexInstrumentor.py +0 -0
  54. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/lib/VertexRequest.py +0 -0
  55. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/lib/data/cohere_embed_english_v3.json +0 -0
  56. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/lib/helpers.py +0 -0
  57. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/lib/version_helper.py +0 -0
  58. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/pagination.py +0 -0
  59. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/py.typed +0 -0
  60. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/__init__.py +0 -0
  61. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/categories/__init__.py +0 -0
  62. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/categories/categories.py +0 -0
  63. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/categories/fixed_cost_resources.py +0 -0
  64. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/categories/resources.py +0 -0
  65. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/ingest.py +0 -0
  66. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/limits/__init__.py +0 -0
  67. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/limits/limits.py +0 -0
  68. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/limits/tags.py +0 -0
  69. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/requests/__init__.py +0 -0
  70. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/requests/request_id/__init__.py +0 -0
  71. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/requests/request_id/properties.py +0 -0
  72. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/requests/request_id/request_id.py +0 -0
  73. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/requests/request_id/result.py +0 -0
  74. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/requests/requests.py +0 -0
  75. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/requests/response_id/__init__.py +0 -0
  76. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/requests/response_id/properties.py +0 -0
  77. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/requests/response_id/response_id.py +0 -0
  78. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/requests/response_id/result.py +0 -0
  79. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/use_cases/__init__.py +0 -0
  80. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/use_cases/definitions/__init__.py +0 -0
  81. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/use_cases/definitions/definitions.py +0 -0
  82. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/use_cases/definitions/kpis.py +0 -0
  83. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/use_cases/definitions/limit_config.py +0 -0
  84. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/use_cases/definitions/version.py +0 -0
  85. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/use_cases/kpis.py +0 -0
  86. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/use_cases/properties.py +0 -0
  87. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/resources/use_cases/use_cases.py +0 -0
  88. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/__init__.py +0 -0
  89. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/bulk_ingest_response.py +0 -0
  90. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/categories/__init__.py +0 -0
  91. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/categories/fixed_cost_resource_create_params.py +0 -0
  92. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/categories/resource_create_params.py +0 -0
  93. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/categories/resource_list_params.py +0 -0
  94. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/category_delete_resource_response.py +0 -0
  95. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/category_delete_response.py +0 -0
  96. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/category_list_params.py +0 -0
  97. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/category_list_resources_params.py +0 -0
  98. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/category_resource_response.py +0 -0
  99. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/category_response.py +0 -0
  100. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/cost_data.py +0 -0
  101. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/cost_details.py +0 -0
  102. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/default_response.py +0 -0
  103. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/ingest_bulk_params.py +0 -0
  104. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/ingest_event_param.py +0 -0
  105. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/ingest_response.py +0 -0
  106. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/ingest_units_params.py +0 -0
  107. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/limit_create_params.py +0 -0
  108. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/limit_history_response.py +0 -0
  109. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/limit_list_params.py +0 -0
  110. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/limit_list_response.py +0 -0
  111. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/limit_reset_params.py +0 -0
  112. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/limit_response.py +0 -0
  113. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/limit_update_params.py +0 -0
  114. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/limits/__init__.py +0 -0
  115. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/limits/limit_tags.py +0 -0
  116. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/limits/tag_create_params.py +0 -0
  117. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/limits/tag_create_response.py +0 -0
  118. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/limits/tag_delete_response.py +0 -0
  119. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/limits/tag_list_response.py +0 -0
  120. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/limits/tag_remove_params.py +0 -0
  121. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/limits/tag_remove_response.py +0 -0
  122. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/limits/tag_update_params.py +0 -0
  123. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/limits/tag_update_response.py +0 -0
  124. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/pay_i_common_models_api_router_header_info_param.py +0 -0
  125. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/request_result.py +0 -0
  126. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/requests/__init__.py +0 -0
  127. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/requests/request_id/__init__.py +0 -0
  128. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/requests/request_id/property_update_params.py +0 -0
  129. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/requests/response_id/__init__.py +0 -0
  130. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/requests/response_id/property_update_params.py +0 -0
  131. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/requests_data.py +0 -0
  132. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/shared/__init__.py +0 -0
  133. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/shared/evaluation_response.py +0 -0
  134. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/shared/ingest_units.py +0 -0
  135. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/shared/pay_i_common_models_budget_management_cost_details_base.py +0 -0
  136. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/shared/pay_i_common_models_budget_management_create_limit_base.py +0 -0
  137. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/shared/properties_response.py +0 -0
  138. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/shared/xproxy_error.py +0 -0
  139. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/shared/xproxy_result.py +0 -0
  140. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/shared_params/__init__.py +0 -0
  141. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/shared_params/ingest_units.py +0 -0
  142. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/shared_params/pay_i_common_models_budget_management_create_limit_base.py +0 -0
  143. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/total_cost_data.py +0 -0
  144. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/use_case_instance_response.py +0 -0
  145. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/use_cases/__init__.py +0 -0
  146. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/use_cases/definition_create_params.py +0 -0
  147. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/use_cases/definition_list_params.py +0 -0
  148. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/use_cases/definition_update_params.py +0 -0
  149. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/use_cases/definitions/__init__.py +0 -0
  150. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/use_cases/definitions/kpi_create_params.py +0 -0
  151. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/use_cases/definitions/kpi_create_response.py +0 -0
  152. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/use_cases/definitions/kpi_delete_response.py +0 -0
  153. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/use_cases/definitions/kpi_list_params.py +0 -0
  154. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/use_cases/definitions/kpi_list_response.py +0 -0
  155. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/use_cases/definitions/kpi_retrieve_response.py +0 -0
  156. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/use_cases/definitions/kpi_update_params.py +0 -0
  157. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/use_cases/definitions/kpi_update_response.py +0 -0
  158. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/use_cases/definitions/limit_config_create_params.py +0 -0
  159. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/use_cases/kpi_list_params.py +0 -0
  160. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/use_cases/kpi_list_response.py +0 -0
  161. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/use_cases/kpi_update_params.py +0 -0
  162. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/use_cases/property_update_params.py +0 -0
  163. {payi-0.1.0a116 → payi-0.1.0a118}/src/payi/types/use_cases/use_case_definition.py +0 -0
  164. {payi-0.1.0a116 → payi-0.1.0a118}/tests/__init__.py +0 -0
  165. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/__init__.py +0 -0
  166. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/categories/__init__.py +0 -0
  167. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/categories/test_fixed_cost_resources.py +0 -0
  168. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/categories/test_resources.py +0 -0
  169. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/limits/__init__.py +0 -0
  170. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/limits/test_tags.py +0 -0
  171. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/requests/__init__.py +0 -0
  172. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/requests/request_id/__init__.py +0 -0
  173. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/requests/request_id/test_properties.py +0 -0
  174. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/requests/request_id/test_result.py +0 -0
  175. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/requests/response_id/__init__.py +0 -0
  176. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/requests/response_id/test_properties.py +0 -0
  177. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/requests/response_id/test_result.py +0 -0
  178. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/test_categories.py +0 -0
  179. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/test_ingest.py +0 -0
  180. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/test_limits.py +0 -0
  181. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/test_use_cases.py +0 -0
  182. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/use_cases/__init__.py +0 -0
  183. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/use_cases/definitions/__init__.py +0 -0
  184. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/use_cases/definitions/test_kpis.py +0 -0
  185. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/use_cases/definitions/test_limit_config.py +0 -0
  186. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/use_cases/definitions/test_version.py +0 -0
  187. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/use_cases/test_definitions.py +0 -0
  188. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/use_cases/test_kpis.py +0 -0
  189. {payi-0.1.0a116 → payi-0.1.0a118}/tests/api_resources/use_cases/test_properties.py +0 -0
  190. {payi-0.1.0a116 → payi-0.1.0a118}/tests/conftest.py +0 -0
  191. {payi-0.1.0a116 → payi-0.1.0a118}/tests/sample_file.txt +0 -0
  192. {payi-0.1.0a116 → payi-0.1.0a118}/tests/test_deepcopy.py +0 -0
  193. {payi-0.1.0a116 → payi-0.1.0a118}/tests/test_extract_files.py +0 -0
  194. {payi-0.1.0a116 → payi-0.1.0a118}/tests/test_files.py +0 -0
  195. {payi-0.1.0a116 → payi-0.1.0a118}/tests/test_models.py +0 -0
  196. {payi-0.1.0a116 → payi-0.1.0a118}/tests/test_qs.py +0 -0
  197. {payi-0.1.0a116 → payi-0.1.0a118}/tests/test_required_args.py +0 -0
  198. {payi-0.1.0a116 → payi-0.1.0a118}/tests/test_response.py +0 -0
  199. {payi-0.1.0a116 → payi-0.1.0a118}/tests/test_streaming.py +0 -0
  200. {payi-0.1.0a116 → payi-0.1.0a118}/tests/test_transform.py +0 -0
  201. {payi-0.1.0a116 → payi-0.1.0a118}/tests/test_utils/test_datetime_parse.py +0 -0
  202. {payi-0.1.0a116 → payi-0.1.0a118}/tests/test_utils/test_proxy.py +0 -0
  203. {payi-0.1.0a116 → payi-0.1.0a118}/tests/test_utils/test_typing.py +0 -0
  204. {payi-0.1.0a116 → payi-0.1.0a118}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.1.0-alpha.118"
3
+ }
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.0-alpha.118 (2025-09-16)
4
+
5
+ Full Changelog: [v0.1.0-alpha.117...v0.1.0-alpha.118](https://github.com/Pay-i/pay-i-python/compare/v0.1.0-alpha.117...v0.1.0-alpha.118)
6
+
7
+ ### Bug Fixes
8
+
9
+ * bedrock resource, copy extra_headers ([#366](https://github.com/Pay-i/pay-i-python/issues/366)) ([8e0d188](https://github.com/Pay-i/pay-i-python/commit/8e0d1889bd48b398f27c5ea69b3cab5db23e31fa))
10
+
11
+ ## 0.1.0-alpha.117 (2025-09-16)
12
+
13
+ Full Changelog: [v0.1.0-alpha.116...v0.1.0-alpha.117](https://github.com/Pay-i/pay-i-python/compare/v0.1.0-alpha.116...v0.1.0-alpha.117)
14
+
15
+ ### Chores
16
+
17
+ * **tests:** simplify `get_platform` test ([9aeaba6](https://github.com/Pay-i/pay-i-python/commit/9aeaba6c83b4cdcd6bb348609a9e22ad86b14b7a))
18
+
3
19
  ## 0.1.0-alpha.116 (2025-09-06)
4
20
 
5
21
  Full Changelog: [v0.1.0-alpha.115...v0.1.0-alpha.116](https://github.com/Pay-i/pay-i-python/compare/v0.1.0-alpha.115...v0.1.0-alpha.116)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: payi
3
- Version: 0.1.0a116
3
+ Version: 0.1.0a118
4
4
  Summary: The official Python library for the payi API
5
5
  Project-URL: Homepage, https://github.com/Pay-i/pay-i-python
6
6
  Project-URL: Repository, https://github.com/Pay-i/pay-i-python
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "payi"
3
- version = "0.1.0-alpha.116"
3
+ version = "0.1.0-alpha.118"
4
4
  description = "The official Python library for the payi API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -60,7 +60,6 @@ dev-dependencies = [
60
60
  "dirty-equals>=0.6.0",
61
61
  "importlib-metadata>=6.7.0",
62
62
  "rich>=13.7.1",
63
- "nest_asyncio==1.6.0",
64
63
  "pytest-xdist>=3.6.1",
65
64
  "wrapt",
66
65
  ]
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "payi"
4
- __version__ = "0.1.0-alpha.116" # x-release-please-version
4
+ __version__ = "0.1.0-alpha.118" # x-release-please-version
@@ -513,6 +513,8 @@ class _BedrockInvokeProviderRequest(_BedrockProviderRequest):
513
513
  class _BedrockConverseProviderRequest(_BedrockProviderRequest):
514
514
  @override
515
515
  def process_request(self, instance: Any, extra_headers: 'dict[str, str]', args: Sequence[Any], kwargs: Any) -> bool:
516
+ super().process_request(instance, extra_headers, args, kwargs)
517
+
516
518
  guardrail_config = kwargs.get("guardrailConfig", {})
517
519
  if guardrail_config:
518
520
  guardrailIdentifier = guardrail_config.get("guardrailIdentifier", "")
@@ -989,12 +989,14 @@ class _PayiInstrumentor:
989
989
 
990
990
  # after _udpate_headers, all metadata to add to ingest is in extra_headers, keyed by the xproxy-xxx header name
991
991
  extra_headers: Optional[dict[str, str]] = kwargs.get("extra_headers")
992
- if extra_headers is None:
993
- extra_headers = {}
992
+ extra_headers = (extra_headers or {}).copy()
994
993
  self._update_extra_headers(context, extra_headers)
995
994
 
996
995
  if context.get("proxy", self._proxy_default):
997
- if "extra_headers" not in kwargs and extra_headers:
996
+ if not request.supports_extra_headers:
997
+ kwargs.pop("extra_headers", None)
998
+ elif extra_headers:
999
+ # Pass the copy to the wrapped function. Assumes anthropic and openai clients
998
1000
  kwargs["extra_headers"] = extra_headers
999
1001
 
1000
1002
  self._logger.debug(f"async_invoke_wrapper: sending proxy request")
@@ -1025,6 +1027,10 @@ class _PayiInstrumentor:
1025
1027
  self._prepare_ingest(request, context, extra_headers, args, kwargs)
1026
1028
  self._logger.debug(f"async_invoke_wrapper: calling wrapped instance (stream={stream})")
1027
1029
 
1030
+ if "extra_headers" in kwargs:
1031
+ # replace the original extra_headers with the updated copy which has all of the Pay-i headers removed
1032
+ kwargs["extra_headers"] = extra_headers
1033
+
1028
1034
  sw.start()
1029
1035
  response = await wrapped(*args, **kwargs)
1030
1036
 
@@ -1109,15 +1115,14 @@ class _PayiInstrumentor:
1109
1115
 
1110
1116
  # after _udpate_headers, all metadata to add to ingest is in extra_headers, keyed by the xproxy-xxx header name
1111
1117
  extra_headers: Optional[dict[str, str]] = kwargs.get("extra_headers")
1112
- if extra_headers is None:
1113
- extra_headers = {}
1118
+ extra_headers = (extra_headers or {}).copy()
1114
1119
  self._update_extra_headers(context, extra_headers)
1115
1120
 
1116
1121
  if context.get("proxy", self._proxy_default):
1117
1122
  if not request.supports_extra_headers:
1118
1123
  kwargs.pop("extra_headers", None)
1119
- elif "extra_headers" not in kwargs and extra_headers:
1120
- # assumes anthropic and openai clients
1124
+ elif extra_headers:
1125
+ # Pass the copy to the wrapped function. Assumes anthropic and openai clients
1121
1126
  kwargs["extra_headers"] = extra_headers
1122
1127
 
1123
1128
  self._logger.debug(f"invoke_wrapper: sending proxy request")
@@ -1148,6 +1153,10 @@ class _PayiInstrumentor:
1148
1153
  self._prepare_ingest(request, context, extra_headers, args, kwargs)
1149
1154
  self._logger.debug(f"invoke_wrapper: calling wrapped instance (stream={stream})")
1150
1155
 
1156
+ if "extra_headers" in kwargs:
1157
+ # replace the original extra_headers with the updated copy which has all of the Pay-i headers removed
1158
+ kwargs["extra_headers"] = extra_headers
1159
+
1151
1160
  sw.start()
1152
1161
  response = wrapped(*args, **kwargs)
1153
1162
 
@@ -6,13 +6,10 @@ import gc
6
6
  import os
7
7
  import sys
8
8
  import json
9
- import time
10
9
  import asyncio
11
10
  import inspect
12
- import subprocess
13
11
  import tracemalloc
14
12
  from typing import Any, Union, cast
15
- from textwrap import dedent
16
13
  from unittest import mock
17
14
  from typing_extensions import Literal
18
15
 
@@ -23,14 +20,17 @@ from pydantic import ValidationError
23
20
 
24
21
  from payi import Payi, AsyncPayi, APIResponseValidationError
25
22
  from payi._types import Omit
23
+ from payi._utils import asyncify
26
24
  from payi._models import BaseModel, FinalRequestOptions
27
25
  from payi._exceptions import PayiError, APIStatusError, APITimeoutError, APIResponseValidationError
28
26
  from payi._base_client import (
29
27
  DEFAULT_TIMEOUT,
30
28
  HTTPX_DEFAULT_TIMEOUT,
31
29
  BaseClient,
30
+ OtherPlatform,
32
31
  DefaultHttpxClient,
33
32
  DefaultAsyncHttpxClient,
33
+ get_platform,
34
34
  make_request_options,
35
35
  )
36
36
 
@@ -1617,50 +1617,9 @@ class TestAsyncPayi:
1617
1617
 
1618
1618
  assert response.http_request.headers.get("x-stainless-retry-count") == "42"
1619
1619
 
1620
- def test_get_platform(self) -> None:
1621
- # A previous implementation of asyncify could leave threads unterminated when
1622
- # used with nest_asyncio.
1623
- #
1624
- # Since nest_asyncio.apply() is global and cannot be un-applied, this
1625
- # test is run in a separate process to avoid affecting other tests.
1626
- test_code = dedent("""
1627
- import asyncio
1628
- import nest_asyncio
1629
- import threading
1630
-
1631
- from payi._utils import asyncify
1632
- from payi._base_client import get_platform
1633
-
1634
- async def test_main() -> None:
1635
- result = await asyncify(get_platform)()
1636
- print(result)
1637
- for thread in threading.enumerate():
1638
- print(thread.name)
1639
-
1640
- nest_asyncio.apply()
1641
- asyncio.run(test_main())
1642
- """)
1643
- with subprocess.Popen(
1644
- [sys.executable, "-c", test_code],
1645
- text=True,
1646
- ) as process:
1647
- timeout = 10 # seconds
1648
-
1649
- start_time = time.monotonic()
1650
- while True:
1651
- return_code = process.poll()
1652
- if return_code is not None:
1653
- if return_code != 0:
1654
- raise AssertionError("calling get_platform using asyncify resulted in a non-zero exit code")
1655
-
1656
- # success
1657
- break
1658
-
1659
- if time.monotonic() - start_time > timeout:
1660
- process.kill()
1661
- raise AssertionError("calling get_platform using asyncify resulted in a hung process")
1662
-
1663
- time.sleep(0.1)
1620
+ async def test_get_platform(self) -> None:
1621
+ platform = await asyncify(get_platform)()
1622
+ assert isinstance(platform, (str, OtherPlatform))
1664
1623
 
1665
1624
  async def test_proxy_environment_variables(self, monkeypatch: pytest.MonkeyPatch) -> None:
1666
1625
  # Test that the proxy environment variables are set correctly
@@ -1,3 +0,0 @@
1
- {
2
- ".": "0.1.0-alpha.116"
3
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes