scale-gp-beta 0.1.0a38__tar.gz → 0.1.0a39__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 (219) hide show
  1. scale_gp_beta-0.1.0a39/.release-please-manifest.json +3 -0
  2. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/CHANGELOG.md +13 -0
  3. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/PKG-INFO +2 -1
  4. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/pyproject.toml +2 -1
  5. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_version.py +1 -1
  6. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/lib/tracing/integrations/openai/utils.py +3 -1
  7. scale_gp_beta-0.1.0a39/tests/lib/tracing/integrations/__init__.py +0 -0
  8. scale_gp_beta-0.1.0a39/tests/lib/tracing/integrations/openai/__init__.py +0 -0
  9. scale_gp_beta-0.1.0a39/tests/lib/tracing/integrations/openai/test_utils.py +248 -0
  10. scale_gp_beta-0.1.0a38/.release-please-manifest.json +0 -3
  11. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/.gitignore +0 -0
  12. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/CONTRIBUTING.md +0 -0
  13. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/LICENSE +0 -0
  14. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/README.md +0 -0
  15. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/SECURITY.md +0 -0
  16. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/api.md +0 -0
  17. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/bin/check-release-environment +0 -0
  18. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/bin/publish-pypi +0 -0
  19. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/examples/.keep +0 -0
  20. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/examples/tracing/0_primitives_fibonacci.py +0 -0
  21. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/examples/tracing/1_explicit_use_case.py +0 -0
  22. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/examples/tracing/2_direct_upload.py +0 -0
  23. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/examples/tracing/3_openai_agent_tracing.py +0 -0
  24. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/noxfile.py +0 -0
  25. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/release-please-config.json +0 -0
  26. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/requirements-dev.lock +0 -0
  27. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/requirements.lock +0 -0
  28. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp/lib/.keep +0 -0
  29. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/__init__.py +0 -0
  30. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_base_client.py +0 -0
  31. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_client.py +0 -0
  32. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_compat.py +0 -0
  33. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_constants.py +0 -0
  34. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_exceptions.py +0 -0
  35. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_files.py +0 -0
  36. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_models.py +0 -0
  37. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_qs.py +0 -0
  38. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_resource.py +0 -0
  39. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_response.py +0 -0
  40. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_streaming.py +0 -0
  41. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_types.py +0 -0
  42. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_utils/__init__.py +0 -0
  43. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_utils/_compat.py +0 -0
  44. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_utils/_datetime_parse.py +0 -0
  45. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_utils/_logs.py +0 -0
  46. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_utils/_proxy.py +0 -0
  47. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_utils/_reflection.py +0 -0
  48. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_utils/_resources_proxy.py +0 -0
  49. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_utils/_streams.py +0 -0
  50. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_utils/_sync.py +0 -0
  51. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_utils/_transform.py +0 -0
  52. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_utils/_typing.py +0 -0
  53. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/_utils/_utils.py +0 -0
  54. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/lib/.keep +0 -0
  55. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/lib/CONTRIBUTING.MD +0 -0
  56. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/lib/tracing/__init__.py +0 -0
  57. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/lib/tracing/exceptions.py +0 -0
  58. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/lib/tracing/integrations/__init__.py +0 -0
  59. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/lib/tracing/integrations/openai/__init__.py +0 -0
  60. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/lib/tracing/integrations/openai/openai_span_type_map.py +0 -0
  61. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/lib/tracing/integrations/openai/openai_tracing_sgp_processor.py +0 -0
  62. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/lib/tracing/scope.py +0 -0
  63. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/lib/tracing/span.py +0 -0
  64. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/lib/tracing/trace.py +0 -0
  65. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/lib/tracing/trace_exporter.py +0 -0
  66. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/lib/tracing/trace_queue_manager.py +0 -0
  67. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/lib/tracing/tracing.py +0 -0
  68. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/lib/tracing/types.py +0 -0
  69. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/lib/tracing/util.py +0 -0
  70. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/pagination.py +0 -0
  71. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/py.typed +0 -0
  72. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/resources/__init__.py +0 -0
  73. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/resources/chat/__init__.py +0 -0
  74. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/resources/chat/chat.py +0 -0
  75. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/resources/chat/completions.py +0 -0
  76. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/resources/completions.py +0 -0
  77. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/resources/credentials.py +0 -0
  78. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/resources/dataset_items.py +0 -0
  79. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/resources/datasets.py +0 -0
  80. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/resources/evaluation_items.py +0 -0
  81. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/resources/evaluations.py +0 -0
  82. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/resources/files/__init__.py +0 -0
  83. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/resources/files/content.py +0 -0
  84. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/resources/files/files.py +0 -0
  85. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/resources/inference.py +0 -0
  86. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/resources/models.py +0 -0
  87. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/resources/questions.py +0 -0
  88. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/resources/responses.py +0 -0
  89. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/resources/span_assessments.py +0 -0
  90. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/resources/spans.py +0 -0
  91. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/__init__.py +0 -0
  92. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/approval_status.py +0 -0
  93. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/assessment_type.py +0 -0
  94. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/chat/__init__.py +0 -0
  95. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/chat/chat_completion.py +0 -0
  96. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/chat/chat_completion_chunk.py +0 -0
  97. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/chat/completion_create_params.py +0 -0
  98. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/chat/completion_create_response.py +0 -0
  99. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/chat/completion_models_params.py +0 -0
  100. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/chat/completion_models_response.py +0 -0
  101. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/chat/model_definition.py +0 -0
  102. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/completion.py +0 -0
  103. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/completion_create_params.py +0 -0
  104. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/component.py +0 -0
  105. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/component_param.py +0 -0
  106. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/container.py +0 -0
  107. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/container_param.py +0 -0
  108. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/credential.py +0 -0
  109. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/credential_create_params.py +0 -0
  110. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/credential_delete_response.py +0 -0
  111. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/credential_list_params.py +0 -0
  112. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/credential_secret.py +0 -0
  113. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/credential_update_params.py +0 -0
  114. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/dataset.py +0 -0
  115. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/dataset_create_params.py +0 -0
  116. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/dataset_delete_response.py +0 -0
  117. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/dataset_item.py +0 -0
  118. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/dataset_item_batch_create_params.py +0 -0
  119. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/dataset_item_batch_create_response.py +0 -0
  120. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/dataset_item_delete_response.py +0 -0
  121. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/dataset_item_list_params.py +0 -0
  122. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/dataset_item_retrieve_params.py +0 -0
  123. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/dataset_item_update_params.py +0 -0
  124. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/dataset_list_params.py +0 -0
  125. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/dataset_retrieve_params.py +0 -0
  126. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/dataset_update_params.py +0 -0
  127. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/evaluation.py +0 -0
  128. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/evaluation_create_params.py +0 -0
  129. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/evaluation_item.py +0 -0
  130. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/evaluation_item_list_params.py +0 -0
  131. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/evaluation_item_retrieve_params.py +0 -0
  132. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/evaluation_list_params.py +0 -0
  133. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/evaluation_retrieve_params.py +0 -0
  134. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/evaluation_task.py +0 -0
  135. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/evaluation_task_param.py +0 -0
  136. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/evaluation_update_params.py +0 -0
  137. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/file.py +0 -0
  138. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/file_create_params.py +0 -0
  139. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/file_delete_response.py +0 -0
  140. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/file_import_from_cloud_params.py +0 -0
  141. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/file_import_from_cloud_response.py +0 -0
  142. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/file_list_params.py +0 -0
  143. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/file_update_params.py +0 -0
  144. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/files/__init__.py +0 -0
  145. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/inference_create_params.py +0 -0
  146. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/inference_create_response.py +0 -0
  147. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/inference_model.py +0 -0
  148. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/inference_response.py +0 -0
  149. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/inference_response_chunk.py +0 -0
  150. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/item_locator.py +0 -0
  151. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/item_locator_template.py +0 -0
  152. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/model_create_params.py +0 -0
  153. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/model_delete_response.py +0 -0
  154. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/model_list_params.py +0 -0
  155. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/model_update_params.py +0 -0
  156. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/question.py +0 -0
  157. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/question_create_params.py +0 -0
  158. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/question_list_params.py +0 -0
  159. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/response.py +0 -0
  160. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/response_create_params.py +0 -0
  161. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/response_create_response.py +0 -0
  162. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/shared/__init__.py +0 -0
  163. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/shared/identity.py +0 -0
  164. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/span.py +0 -0
  165. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/span_assessment.py +0 -0
  166. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/span_assessment_create_params.py +0 -0
  167. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/span_assessment_delete_response.py +0 -0
  168. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/span_assessment_list_params.py +0 -0
  169. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/span_assessment_update_params.py +0 -0
  170. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/span_batch_params.py +0 -0
  171. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/span_batch_response.py +0 -0
  172. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/span_create_params.py +0 -0
  173. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/span_search_params.py +0 -0
  174. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/span_status.py +0 -0
  175. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/span_type.py +0 -0
  176. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/span_update_params.py +0 -0
  177. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/span_upsert_batch_params.py +0 -0
  178. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/scale_gp_beta/types/span_upsert_batch_response.py +0 -0
  179. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/src/sgp_dev/lib/.keep +0 -0
  180. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/__init__.py +0 -0
  181. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/api_resources/__init__.py +0 -0
  182. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/api_resources/chat/__init__.py +0 -0
  183. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/api_resources/chat/test_completions.py +0 -0
  184. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/api_resources/files/__init__.py +0 -0
  185. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/api_resources/files/test_content.py +0 -0
  186. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/api_resources/test_completions.py +0 -0
  187. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/api_resources/test_credentials.py +0 -0
  188. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/api_resources/test_dataset_items.py +0 -0
  189. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/api_resources/test_datasets.py +0 -0
  190. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/api_resources/test_evaluation_items.py +0 -0
  191. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/api_resources/test_evaluations.py +0 -0
  192. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/api_resources/test_files.py +0 -0
  193. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/api_resources/test_inference.py +0 -0
  194. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/api_resources/test_models.py +0 -0
  195. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/api_resources/test_questions.py +0 -0
  196. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/api_resources/test_responses.py +0 -0
  197. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/api_resources/test_span_assessments.py +0 -0
  198. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/api_resources/test_spans.py +0 -0
  199. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/conftest.py +0 -0
  200. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/lib/tracing/test_span.py +0 -0
  201. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/lib/tracing/test_trace.py +0 -0
  202. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/lib/tracing/test_trace_exporter.py +0 -0
  203. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/lib/tracing/test_trace_queue_manager.py +0 -0
  204. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/lib/tracing/test_tracing.py +0 -0
  205. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/sample_file.txt +0 -0
  206. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/test_client.py +0 -0
  207. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/test_deepcopy.py +0 -0
  208. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/test_extract_files.py +0 -0
  209. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/test_files.py +0 -0
  210. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/test_models.py +0 -0
  211. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/test_qs.py +0 -0
  212. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/test_required_args.py +0 -0
  213. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/test_response.py +0 -0
  214. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/test_streaming.py +0 -0
  215. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/test_transform.py +0 -0
  216. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/test_utils/test_datetime_parse.py +0 -0
  217. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/test_utils/test_proxy.py +0 -0
  218. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/test_utils/test_typing.py +0 -0
  219. {scale_gp_beta-0.1.0a38 → scale_gp_beta-0.1.0a39}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.1.0-alpha.39"
3
+ }
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.0-alpha.39 (2025-11-21)
4
+
5
+ Full Changelog: [v0.1.0-alpha.38...v0.1.0-alpha.39](https://github.com/scaleapi/sgp-python-beta/compare/v0.1.0-alpha.38...v0.1.0-alpha.39)
6
+
7
+ ### Bug Fixes
8
+
9
+ * **tracing:** handle non-dict JSON in parse_input_output ([377f7b5](https://github.com/scaleapi/sgp-python-beta/commit/377f7b5b8c355f7a691f1a067edea504fa92c141))
10
+
11
+
12
+ ### Chores
13
+
14
+ * **internal:** codegen related update ([a92ffed](https://github.com/scaleapi/sgp-python-beta/commit/a92ffed83d81cbb83ee34640c290e66ffb42cb6c))
15
+
3
16
  ## 0.1.0-alpha.38 (2025-11-21)
4
17
 
5
18
  Full Changelog: [v0.1.0-alpha.37...v0.1.0-alpha.38](https://github.com/scaleapi/sgp-python-beta/compare/v0.1.0-alpha.37...v0.1.0-alpha.38)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: scale-gp-beta
3
- Version: 0.1.0a38
3
+ Version: 0.1.0a39
4
4
  Summary: The official Python library for the Scale GP API
5
5
  Project-URL: Homepage, https://github.com/scaleapi/sgp-python-beta
6
6
  Project-URL: Repository, https://github.com/scaleapi/sgp-python-beta
@@ -18,6 +18,7 @@ Classifier: Programming Language :: Python :: 3.10
18
18
  Classifier: Programming Language :: Python :: 3.11
19
19
  Classifier: Programming Language :: Python :: 3.12
20
20
  Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
21
22
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
23
  Classifier: Typing :: Typed
23
24
  Requires-Python: >=3.9
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "scale-gp-beta"
3
- version = "0.1.0-alpha.38"
3
+ version = "0.1.0-alpha.39"
4
4
  description = "The official Python library for the Scale GP API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -24,6 +24,7 @@ classifiers = [
24
24
  "Programming Language :: Python :: 3.11",
25
25
  "Programming Language :: Python :: 3.12",
26
26
  "Programming Language :: Python :: 3.13",
27
+ "Programming Language :: Python :: 3.14",
27
28
  "Operating System :: OS Independent",
28
29
  "Operating System :: POSIX",
29
30
  "Operating System :: MacOS",
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "scale_gp_beta"
4
- __version__ = "0.1.0-alpha.38" # x-release-please-version
4
+ __version__ = "0.1.0-alpha.39" # x-release-please-version
@@ -62,7 +62,9 @@ def parse_input_output(openai_span: "OpenAISpan", key: str) -> Dict[str, Any]:
62
62
 
63
63
  if isinstance(value, str):
64
64
  try:
65
- return json.loads(value)
65
+ value = json.loads(value)
66
+ if isinstance(value, dict):
67
+ return value
66
68
  except (json.JSONDecodeError, TypeError):
67
69
  return {key: value}
68
70
  return {key: value}
@@ -0,0 +1,248 @@
1
+ import json
2
+ from unittest.mock import Mock, patch
3
+
4
+ from scale_gp_beta.lib.tracing.integrations.openai.utils import (
5
+ sgp_span_name, # pyright: ignore[reportUnknownVariableType]
6
+ parse_metadata, # pyright: ignore[reportUnknownVariableType]
7
+ parse_input_output, # pyright: ignore[reportUnknownVariableType]
8
+ )
9
+
10
+
11
+ class TestParseInputOutput:
12
+ """Tests for parse_input_output function"""
13
+
14
+ def test_parse_dict_json_string(self):
15
+ """Test parsing a JSON string that represents a dict"""
16
+ mock_span = Mock()
17
+ mock_span_data = Mock()
18
+ dict_value = {"key": "value", "nested": {"data": 123}}
19
+ mock_span_data.export.return_value = {"input": json.dumps(dict_value)}
20
+ mock_span.span_data = mock_span_data
21
+
22
+ result = parse_input_output(mock_span, "input")
23
+
24
+ assert result == dict_value
25
+ assert isinstance(result, dict)
26
+
27
+ def test_parse_list_json_string(self):
28
+ """Test parsing a JSON string that represents a list - should wrap in dict"""
29
+ mock_span = Mock()
30
+ mock_span_data = Mock()
31
+ list_value = [1, 2, 3, "test"]
32
+ mock_span_data.export.return_value = {"output": json.dumps(list_value)}
33
+ mock_span.span_data = mock_span_data
34
+
35
+ result = parse_input_output(mock_span, "output")
36
+
37
+ assert result == {"output": list_value}
38
+ assert isinstance(result, dict)
39
+
40
+ def test_parse_integer_json_string(self):
41
+ """Test parsing a JSON string that represents an integer - should wrap in dict"""
42
+ mock_span = Mock()
43
+ mock_span_data = Mock()
44
+ int_value = 42
45
+ mock_span_data.export.return_value = {"input": json.dumps(int_value)}
46
+ mock_span.span_data = mock_span_data
47
+
48
+ result = parse_input_output(mock_span, "input")
49
+
50
+ assert result == {"input": int_value}
51
+ assert isinstance(result, dict)
52
+
53
+ def test_parse_string_json_string(self):
54
+ """Test parsing a JSON string that represents a string - should wrap in dict"""
55
+ mock_span = Mock()
56
+ mock_span_data = Mock()
57
+ string_value = "hello world"
58
+ mock_span_data.export.return_value = {"output": json.dumps(string_value)}
59
+ mock_span.span_data = mock_span_data
60
+
61
+ result = parse_input_output(mock_span, "output")
62
+
63
+ assert result == {"output": string_value}
64
+ assert isinstance(result, dict)
65
+
66
+ def test_parse_boolean_json_string(self):
67
+ """Test parsing a JSON string that represents a boolean - should wrap in dict"""
68
+ mock_span = Mock()
69
+ mock_span_data = Mock()
70
+ bool_value = True
71
+ mock_span_data.export.return_value = {"input": json.dumps(bool_value)}
72
+ mock_span.span_data = mock_span_data
73
+
74
+ result = parse_input_output(mock_span, "input")
75
+
76
+ assert result == {"input": bool_value}
77
+ assert isinstance(result, dict)
78
+
79
+ def test_parse_null_json_string(self):
80
+ """Test parsing a JSON string that represents null - should wrap in dict"""
81
+ mock_span = Mock()
82
+ mock_span_data = Mock()
83
+ mock_span_data.export.return_value = {"output": json.dumps(None)}
84
+ mock_span.span_data = mock_span_data
85
+
86
+ result = parse_input_output(mock_span, "output")
87
+
88
+ assert result == {"output": None}
89
+ assert isinstance(result, dict)
90
+
91
+ def test_parse_invalid_json_string(self):
92
+ """Test parsing an invalid JSON string - should wrap in dict"""
93
+ mock_span = Mock()
94
+ mock_span_data = Mock()
95
+ invalid_json = "not valid json {"
96
+ mock_span_data.export.return_value = {"input": invalid_json}
97
+ mock_span.span_data = mock_span_data
98
+
99
+ result = parse_input_output(mock_span, "input")
100
+
101
+ assert result == {"input": invalid_json}
102
+ assert isinstance(result, dict)
103
+
104
+ def test_parse_non_string_dict_value(self):
105
+ """Test when value is already a dict (not a string)"""
106
+ mock_span = Mock()
107
+ mock_span_data = Mock()
108
+ dict_value = {"existing": "dict"}
109
+ mock_span_data.export.return_value = {"output": dict_value}
110
+ mock_span.span_data = mock_span_data
111
+
112
+ result = parse_input_output(mock_span, "output")
113
+
114
+ assert result == {"output": dict_value}
115
+ assert isinstance(result, dict)
116
+
117
+ def test_parse_non_string_list_value(self):
118
+ """Test when value is already a list (not a string)"""
119
+ mock_span = Mock()
120
+ mock_span_data = Mock()
121
+ list_value = [1, 2, 3]
122
+ mock_span_data.export.return_value = {"input": list_value}
123
+ mock_span.span_data = mock_span_data
124
+
125
+ result = parse_input_output(mock_span, "input")
126
+
127
+ assert result == {"input": list_value}
128
+ assert isinstance(result, dict)
129
+
130
+ def test_parse_none_value(self):
131
+ """Test when the key doesn't exist in exported data"""
132
+ mock_span = Mock()
133
+ mock_span_data = Mock()
134
+ mock_span_data.export.return_value = {}
135
+ mock_span.span_data = mock_span_data
136
+
137
+ result = parse_input_output(mock_span, "nonexistent_key")
138
+
139
+ assert result == {}
140
+ assert isinstance(result, dict)
141
+
142
+ def test_parse_none_span_data(self):
143
+ """Test when span_data is None"""
144
+ mock_span = Mock()
145
+ mock_span.span_data = None
146
+
147
+ result = parse_input_output(mock_span, "input")
148
+
149
+ assert result == {}
150
+ assert isinstance(result, dict)
151
+
152
+ def test_parse_complex_nested_structure(self):
153
+ """Test parsing a complex nested JSON structure"""
154
+ mock_span = Mock()
155
+ mock_span_data = Mock()
156
+ complex_value = {
157
+ "messages": [
158
+ {"role": "user", "content": "Hello"},
159
+ {"role": "assistant", "content": "Hi there!"}
160
+ ],
161
+ "metadata": {
162
+ "tokens": 150,
163
+ "model": "gpt-4"
164
+ }
165
+ }
166
+ mock_span_data.export.return_value = {"input": json.dumps(complex_value)}
167
+ mock_span.span_data = mock_span_data
168
+
169
+ result = parse_input_output(mock_span, "input")
170
+
171
+ assert result == complex_value
172
+ assert isinstance(result, dict)
173
+ assert len(result["messages"]) == 2
174
+ assert result["metadata"]["tokens"] == 150
175
+
176
+
177
+ class TestSgpSpanName:
178
+ """Tests for sgp_span_name function"""
179
+
180
+ def test_with_valid_name(self):
181
+ """Test when span_data has a name in export"""
182
+ mock_span = Mock()
183
+ mock_span_data = Mock()
184
+ mock_span_data.export.return_value = {"name": "TestSpan"}
185
+ mock_span_data.__class__.__name__ = "CustomSpanData"
186
+ mock_span.span_data = mock_span_data
187
+
188
+ result = sgp_span_name(mock_span)
189
+
190
+ assert result == "TestSpan"
191
+
192
+ def test_without_name(self):
193
+ """Test when span_data doesn't have a name - should use class name"""
194
+ mock_span = Mock()
195
+ mock_span_data = Mock()
196
+ mock_span_data.export.return_value = {}
197
+ mock_span_data.__class__.__name__ = "ToolSpanData"
198
+ mock_span.span_data = mock_span_data
199
+
200
+ result = sgp_span_name(mock_span)
201
+
202
+ assert result == "Tool"
203
+
204
+ def test_with_none_span_data(self):
205
+ """Test when span_data is None"""
206
+ mock_span = Mock()
207
+ mock_span.span_data = None
208
+
209
+ result = sgp_span_name(mock_span)
210
+
211
+ assert result == "Unnamed Span"
212
+
213
+ class TestParseMetadata:
214
+ """Tests for parse_metadata function"""
215
+
216
+ def test_with_valid_span_data(self):
217
+ """Test parsing metadata from span with valid span_data"""
218
+ mock_span = Mock()
219
+ mock_span_data = Mock()
220
+ mock_span_data.export.return_value = {
221
+ "type": "tool",
222
+ "name": "calculator",
223
+ "extra": "value",
224
+ "input": "should be excluded",
225
+ "output": "should be excluded"
226
+ }
227
+ mock_span.span_id = "span-123"
228
+ mock_span.span_data = mock_span_data
229
+
230
+ with patch('scale_gp_beta.lib.tracing.integrations.openai.utils.extract_response', return_value=None):
231
+ result = parse_metadata(mock_span)
232
+
233
+ assert "openai_metadata" in result
234
+ assert result["openai_metadata"]["openai_span_id"] == "span-123"
235
+ assert result["openai_metadata"]["type"] == "tool"
236
+ assert result["openai_metadata"]["name"] == "calculator"
237
+ assert result["openai_metadata"]["extra"] == "value"
238
+ assert "input" not in result["openai_metadata"]
239
+ assert "output" not in result["openai_metadata"]
240
+
241
+ def test_with_none_span_data(self):
242
+ """Test when span_data is None"""
243
+ mock_span = Mock()
244
+ mock_span.span_data = None
245
+
246
+ result = parse_metadata(mock_span)
247
+
248
+ assert result == {}
@@ -1,3 +0,0 @@
1
- {
2
- ".": "0.1.0-alpha.38"
3
- }