payi 0.1.0a81__tar.gz → 0.1.0a82__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 (205) hide show
  1. payi-0.1.0a82/.release-please-manifest.json +3 -0
  2. {payi-0.1.0a81 → payi-0.1.0a82}/CHANGELOG.md +8 -0
  3. {payi-0.1.0a81 → payi-0.1.0a82}/PKG-INFO +1 -1
  4. {payi-0.1.0a81 → payi-0.1.0a82}/pyproject.toml +1 -1
  5. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_version.py +1 -1
  6. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/lib/GoogleGenAiInstrumentor.py +22 -6
  7. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/lib/VertexInstrumentor.py +22 -5
  8. payi-0.1.0a81/.release-please-manifest.json +0 -3
  9. {payi-0.1.0a81 → payi-0.1.0a82}/.gitignore +0 -0
  10. {payi-0.1.0a81 → payi-0.1.0a82}/CONTRIBUTING.md +0 -0
  11. {payi-0.1.0a81 → payi-0.1.0a82}/LICENSE +0 -0
  12. {payi-0.1.0a81 → payi-0.1.0a82}/README.md +0 -0
  13. {payi-0.1.0a81 → payi-0.1.0a82}/SECURITY.md +0 -0
  14. {payi-0.1.0a81 → payi-0.1.0a82}/api.md +0 -0
  15. {payi-0.1.0a81 → payi-0.1.0a82}/bin/check-release-environment +0 -0
  16. {payi-0.1.0a81 → payi-0.1.0a82}/bin/publish-pypi +0 -0
  17. {payi-0.1.0a81 → payi-0.1.0a82}/examples/.keep +0 -0
  18. {payi-0.1.0a81 → payi-0.1.0a82}/mypy.ini +0 -0
  19. {payi-0.1.0a81 → payi-0.1.0a82}/noxfile.py +0 -0
  20. {payi-0.1.0a81 → payi-0.1.0a82}/release-please-config.json +0 -0
  21. {payi-0.1.0a81 → payi-0.1.0a82}/requirements-dev.lock +0 -0
  22. {payi-0.1.0a81 → payi-0.1.0a82}/requirements.lock +0 -0
  23. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/__init__.py +0 -0
  24. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_base_client.py +0 -0
  25. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_client.py +0 -0
  26. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_compat.py +0 -0
  27. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_constants.py +0 -0
  28. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_exceptions.py +0 -0
  29. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_files.py +0 -0
  30. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_models.py +0 -0
  31. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_qs.py +0 -0
  32. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_resource.py +0 -0
  33. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_response.py +0 -0
  34. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_streaming.py +0 -0
  35. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_types.py +0 -0
  36. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_utils/__init__.py +0 -0
  37. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_utils/_logs.py +0 -0
  38. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_utils/_proxy.py +0 -0
  39. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_utils/_reflection.py +0 -0
  40. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_utils/_resources_proxy.py +0 -0
  41. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_utils/_streams.py +0 -0
  42. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_utils/_sync.py +0 -0
  43. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_utils/_transform.py +0 -0
  44. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_utils/_typing.py +0 -0
  45. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/_utils/_utils.py +0 -0
  46. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/lib/.keep +0 -0
  47. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/lib/AnthropicInstrumentor.py +0 -0
  48. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/lib/BedrockInstrumentor.py +0 -0
  49. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/lib/OpenAIInstrumentor.py +0 -0
  50. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/lib/Stopwatch.py +0 -0
  51. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/lib/helpers.py +0 -0
  52. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/lib/instrument.py +0 -0
  53. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/pagination.py +0 -0
  54. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/py.typed +0 -0
  55. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/__init__.py +0 -0
  56. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/categories/__init__.py +0 -0
  57. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/categories/categories.py +0 -0
  58. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/categories/resources.py +0 -0
  59. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/experiences/__init__.py +0 -0
  60. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/experiences/experiences.py +0 -0
  61. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/experiences/properties.py +0 -0
  62. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/experiences/types/__init__.py +0 -0
  63. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/experiences/types/limit_config.py +0 -0
  64. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/experiences/types/types.py +0 -0
  65. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/ingest.py +0 -0
  66. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/limits/__init__.py +0 -0
  67. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/limits/limits.py +0 -0
  68. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/limits/tags.py +0 -0
  69. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/requests/__init__.py +0 -0
  70. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/requests/properties.py +0 -0
  71. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/requests/requests.py +0 -0
  72. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/requests/result.py +0 -0
  73. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/use_cases/__init__.py +0 -0
  74. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/use_cases/definitions/__init__.py +0 -0
  75. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/use_cases/definitions/definitions.py +0 -0
  76. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/use_cases/definitions/kpis.py +0 -0
  77. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/use_cases/definitions/limit_config.py +0 -0
  78. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/use_cases/definitions/version.py +0 -0
  79. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/use_cases/kpis.py +0 -0
  80. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/use_cases/properties.py +0 -0
  81. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/resources/use_cases/use_cases.py +0 -0
  82. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/__init__.py +0 -0
  83. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/bulk_ingest_response.py +0 -0
  84. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/categories/__init__.py +0 -0
  85. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/categories/resource_create_params.py +0 -0
  86. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/categories/resource_list_params.py +0 -0
  87. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/category_delete_resource_response.py +0 -0
  88. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/category_delete_response.py +0 -0
  89. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/category_list_params.py +0 -0
  90. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/category_list_resources_params.py +0 -0
  91. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/category_resource_response.py +0 -0
  92. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/category_response.py +0 -0
  93. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/cost_data.py +0 -0
  94. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/cost_details.py +0 -0
  95. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/default_response.py +0 -0
  96. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/experience_instance_response.py +0 -0
  97. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/experiences/__init__.py +0 -0
  98. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/experiences/experience_type.py +0 -0
  99. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/experiences/property_create_params.py +0 -0
  100. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/experiences/type_create_params.py +0 -0
  101. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/experiences/type_list_params.py +0 -0
  102. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/experiences/type_update_params.py +0 -0
  103. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/experiences/types/__init__.py +0 -0
  104. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/experiences/types/limit_config_create_params.py +0 -0
  105. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/ingest_bulk_params.py +0 -0
  106. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/ingest_event_param.py +0 -0
  107. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/ingest_response.py +0 -0
  108. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/ingest_units_params.py +0 -0
  109. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/limit_create_params.py +0 -0
  110. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/limit_history_response.py +0 -0
  111. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/limit_list_params.py +0 -0
  112. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/limit_list_response.py +0 -0
  113. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/limit_reset_params.py +0 -0
  114. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/limit_response.py +0 -0
  115. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/limit_update_params.py +0 -0
  116. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/limits/__init__.py +0 -0
  117. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/limits/limit_tags.py +0 -0
  118. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/limits/tag_create_params.py +0 -0
  119. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/limits/tag_create_response.py +0 -0
  120. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/limits/tag_delete_response.py +0 -0
  121. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/limits/tag_list_response.py +0 -0
  122. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/limits/tag_remove_params.py +0 -0
  123. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/limits/tag_remove_response.py +0 -0
  124. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/limits/tag_update_params.py +0 -0
  125. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/limits/tag_update_response.py +0 -0
  126. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/pay_i_common_models_api_router_header_info_param.py +0 -0
  127. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/requests/__init__.py +0 -0
  128. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/requests/property_create_params.py +0 -0
  129. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/requests/request_result.py +0 -0
  130. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/requests_data.py +0 -0
  131. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/shared/__init__.py +0 -0
  132. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/shared/evaluation_response.py +0 -0
  133. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/shared/ingest_units.py +0 -0
  134. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/shared/pay_i_common_models_budget_management_cost_details_base.py +0 -0
  135. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/shared/pay_i_common_models_budget_management_create_limit_base.py +0 -0
  136. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/shared/properties_response.py +0 -0
  137. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/shared/xproxy_error.py +0 -0
  138. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/shared/xproxy_result.py +0 -0
  139. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/shared_params/__init__.py +0 -0
  140. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/shared_params/ingest_units.py +0 -0
  141. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/shared_params/pay_i_common_models_budget_management_create_limit_base.py +0 -0
  142. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/total_cost_data.py +0 -0
  143. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/use_case_instance_response.py +0 -0
  144. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/use_cases/__init__.py +0 -0
  145. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/use_cases/definition_create_params.py +0 -0
  146. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/use_cases/definition_list_params.py +0 -0
  147. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/use_cases/definition_update_params.py +0 -0
  148. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/use_cases/definitions/__init__.py +0 -0
  149. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/use_cases/definitions/kpi_create_params.py +0 -0
  150. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/use_cases/definitions/kpi_create_response.py +0 -0
  151. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/use_cases/definitions/kpi_delete_response.py +0 -0
  152. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/use_cases/definitions/kpi_list_params.py +0 -0
  153. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/use_cases/definitions/kpi_list_response.py +0 -0
  154. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/use_cases/definitions/kpi_retrieve_response.py +0 -0
  155. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/use_cases/definitions/kpi_update_params.py +0 -0
  156. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/use_cases/definitions/kpi_update_response.py +0 -0
  157. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/use_cases/definitions/limit_config_create_params.py +0 -0
  158. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/use_cases/kpi_create_params.py +0 -0
  159. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/use_cases/kpi_list_params.py +0 -0
  160. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/use_cases/kpi_list_response.py +0 -0
  161. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/use_cases/kpi_update_params.py +0 -0
  162. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/use_cases/property_create_params.py +0 -0
  163. {payi-0.1.0a81 → payi-0.1.0a82}/src/payi/types/use_cases/use_case_definition.py +0 -0
  164. {payi-0.1.0a81 → payi-0.1.0a82}/tests/__init__.py +0 -0
  165. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/__init__.py +0 -0
  166. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/categories/__init__.py +0 -0
  167. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/categories/test_resources.py +0 -0
  168. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/experiences/__init__.py +0 -0
  169. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/experiences/test_properties.py +0 -0
  170. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/experiences/test_types.py +0 -0
  171. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/experiences/types/__init__.py +0 -0
  172. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/experiences/types/test_limit_config.py +0 -0
  173. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/limits/__init__.py +0 -0
  174. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/limits/test_tags.py +0 -0
  175. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/requests/__init__.py +0 -0
  176. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/requests/test_properties.py +0 -0
  177. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/requests/test_result.py +0 -0
  178. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/test_categories.py +0 -0
  179. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/test_experiences.py +0 -0
  180. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/test_ingest.py +0 -0
  181. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/test_limits.py +0 -0
  182. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/test_use_cases.py +0 -0
  183. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/use_cases/__init__.py +0 -0
  184. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/use_cases/definitions/__init__.py +0 -0
  185. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/use_cases/definitions/test_kpis.py +0 -0
  186. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/use_cases/definitions/test_limit_config.py +0 -0
  187. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/use_cases/definitions/test_version.py +0 -0
  188. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/use_cases/test_definitions.py +0 -0
  189. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/use_cases/test_kpis.py +0 -0
  190. {payi-0.1.0a81 → payi-0.1.0a82}/tests/api_resources/use_cases/test_properties.py +0 -0
  191. {payi-0.1.0a81 → payi-0.1.0a82}/tests/conftest.py +0 -0
  192. {payi-0.1.0a81 → payi-0.1.0a82}/tests/sample_file.txt +0 -0
  193. {payi-0.1.0a81 → payi-0.1.0a82}/tests/test_client.py +0 -0
  194. {payi-0.1.0a81 → payi-0.1.0a82}/tests/test_deepcopy.py +0 -0
  195. {payi-0.1.0a81 → payi-0.1.0a82}/tests/test_extract_files.py +0 -0
  196. {payi-0.1.0a81 → payi-0.1.0a82}/tests/test_files.py +0 -0
  197. {payi-0.1.0a81 → payi-0.1.0a82}/tests/test_models.py +0 -0
  198. {payi-0.1.0a81 → payi-0.1.0a82}/tests/test_qs.py +0 -0
  199. {payi-0.1.0a81 → payi-0.1.0a82}/tests/test_required_args.py +0 -0
  200. {payi-0.1.0a81 → payi-0.1.0a82}/tests/test_response.py +0 -0
  201. {payi-0.1.0a81 → payi-0.1.0a82}/tests/test_streaming.py +0 -0
  202. {payi-0.1.0a81 → payi-0.1.0a82}/tests/test_transform.py +0 -0
  203. {payi-0.1.0a81 → payi-0.1.0a82}/tests/test_utils/test_proxy.py +0 -0
  204. {payi-0.1.0a81 → payi-0.1.0a82}/tests/test_utils/test_typing.py +0 -0
  205. {payi-0.1.0a81 → payi-0.1.0a82}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.1.0-alpha.82"
3
+ }
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.0-alpha.82 (2025-06-06)
4
+
5
+ Full Changelog: [v0.1.0-alpha.81...v0.1.0-alpha.82](https://github.com/Pay-i/pay-i-python/compare/v0.1.0-alpha.81...v0.1.0-alpha.82)
6
+
7
+ ### Bug Fixes
8
+
9
+ * vertex, google.genai report tokens when details missing ([#314](https://github.com/Pay-i/pay-i-python/issues/314)) ([54dd25b](https://github.com/Pay-i/pay-i-python/commit/54dd25b1abd93e6fdec22dd7bb8dae39236ee532))
10
+
3
11
  ## 0.1.0-alpha.81 (2025-06-06)
4
12
 
5
13
  Full Changelog: [v0.1.0-alpha.80...v0.1.0-alpha.81](https://github.com/Pay-i/pay-i-python/compare/v0.1.0-alpha.80...v0.1.0-alpha.81)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: payi
3
- Version: 0.1.0a81
3
+ Version: 0.1.0a82
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.81"
3
+ version = "0.1.0-alpha.82"
4
4
  description = "The official Python library for the payi API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -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.81" # x-release-please-version
4
+ __version__ = "0.1.0-alpha.82" # x-release-please-version
@@ -309,15 +309,15 @@ class _GoogleGenAiRequest(_ProviderRequest):
309
309
  usage = response_dict.get("usage_metadata", {})
310
310
  input = usage.get("prompt_token_count", 0)
311
311
 
312
- prompt_tokens_details: list[dict[str, Any]] = usage.get("prompt_tokens_details")
313
- candidates_tokens_details: list[dict[str, Any]] = usage.get("candidates_tokens_details")
312
+ prompt_tokens_details: list[dict[str, Any]] = usage.get("prompt_tokens_details", [])
313
+ candidates_tokens_details: list[dict[str, Any]] = usage.get("candidates_tokens_details", [])
314
314
 
315
315
  model: str = response_dict.get("model_version", "")
316
+
317
+ # for character billing only
318
+ large_context = "" if input < 128000 else "_large_context"
316
319
 
317
320
  if self._is_character_billing_model(model):
318
- # gemini 1.0 and 1.5 units are reported in characters, per second, per image, etc...
319
- large_context = "" if input < 128000 else "_large_context"
320
-
321
321
  for details in prompt_tokens_details:
322
322
  modality = details.get("modality", "")
323
323
  if not modality:
@@ -357,7 +357,7 @@ class _GoogleGenAiRequest(_ProviderRequest):
357
357
  audio_seconds = math.ceil(modality_token_count / 25)
358
358
  self.add_units("audio"+large_context, input=audio_seconds)
359
359
 
360
- elif model.startswith("gemini-2.0"):
360
+ else:
361
361
  for details in prompt_tokens_details:
362
362
  modality = details.get("modality", "")
363
363
  if not modality:
@@ -376,3 +376,19 @@ class _GoogleGenAiRequest(_ProviderRequest):
376
376
  modality_token_count = details.get("token_count", 0)
377
377
  if modality in ("VIDEO", "AUDIO", "TEXT", "IMAGE"):
378
378
  self.add_units(modality.lower(), output=modality_token_count)
379
+
380
+ if not self._ingest["units"]:
381
+ input = usage.get("prompt_token_count", 0)
382
+ output = usage.get("candidates_token_count", 0) * 4
383
+
384
+ if self._is_character_billing_model(model):
385
+ if self._prompt_character_count > 0:
386
+ input = self._prompt_character_count
387
+ else:
388
+ input *= 4
389
+
390
+ # if no units were added, add a default unit and assume 4 characters per token
391
+ self._ingest["units"]["text"+large_context] = Units(input=input, output=output)
392
+ else:
393
+ # if no units were added, add a default unit
394
+ self._ingest["units"]["text"] = Units(input=input, output=output)
@@ -253,15 +253,16 @@ class _GoogleVertexRequest(_ProviderRequest):
253
253
  usage = response_dict.get("usage_metadata", {})
254
254
  input = usage.get("prompt_token_count", 0)
255
255
 
256
- prompt_tokens_details: list[dict[str, Any]] = usage.get("prompt_tokens_details")
257
- candidates_tokens_details: list[dict[str, Any]] = usage.get("candidates_tokens_details")
256
+ prompt_tokens_details: list[dict[str, Any]] = usage.get("prompt_tokens_details", [])
257
+ candidates_tokens_details: list[dict[str, Any]] = usage.get("candidates_tokens_details", [])
258
258
 
259
259
  model: str = response_dict.get("model_version", "")
260
+
261
+ # for character billing only
262
+ large_context = "" if input < 128000 else "_large_context"
260
263
 
261
264
  if self._is_character_billing_model(model):
262
265
  # gemini 1.0 and 1.5 units are reported in characters, per second, per image, etc...
263
- large_context = "" if input < 128000 else "_large_context"
264
-
265
266
  for details in prompt_tokens_details:
266
267
  modality = details.get("modality", "")
267
268
  if not modality:
@@ -301,7 +302,7 @@ class _GoogleVertexRequest(_ProviderRequest):
301
302
  audio_seconds = math.ceil(modality_token_count / 25)
302
303
  self.add_units("audio"+large_context, input=audio_seconds)
303
304
 
304
- elif model.startswith("gemini-2.0"):
305
+ else:
305
306
  for details in prompt_tokens_details:
306
307
  modality = details.get("modality", "")
307
308
  if not modality:
@@ -320,3 +321,19 @@ class _GoogleVertexRequest(_ProviderRequest):
320
321
  modality_token_count = details.get("token_count", 0)
321
322
  if modality in ("VIDEO", "AUDIO", "TEXT", "IMAGE"):
322
323
  self.add_units(modality.lower(), output=modality_token_count)
324
+
325
+ if not self._ingest["units"]:
326
+ input = usage.get("prompt_token_count", 0)
327
+ output = usage.get("candidates_token_count", 0) * 4
328
+
329
+ if self._is_character_billing_model(model):
330
+ if self._prompt_character_count > 0:
331
+ input = self._prompt_character_count
332
+ else:
333
+ input *= 4
334
+
335
+ # if no units were added, add a default unit and assume 4 characters per token
336
+ self._ingest["units"]["text"+large_context] = Units(input=input, output=output)
337
+ else:
338
+ # if no units were added, add a default unit
339
+ self._ingest["units"]["text"] = Units(input=input, output=output)
@@ -1,3 +0,0 @@
1
- {
2
- ".": "0.1.0-alpha.81"
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
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