scale-gp-beta 0.1.0a22__tar.gz → 0.1.0a23__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 (177) hide show
  1. scale_gp_beta-0.1.0a23/.release-please-manifest.json +3 -0
  2. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/CHANGELOG.md +26 -0
  3. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/PKG-INFO +3 -3
  4. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/README.md +2 -2
  5. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/pyproject.toml +1 -1
  6. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_version.py +1 -1
  7. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/lib/tracing/span.py +79 -16
  8. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/lib/tracing/trace.py +81 -41
  9. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/lib/tracing/tracing.py +1 -1
  10. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/conftest.py +2 -0
  11. {scale_gp_beta-0.1.0a22/tests/lib → scale_gp_beta-0.1.0a23/tests/lib/tracing}/test_span.py +4 -4
  12. {scale_gp_beta-0.1.0a22/tests/lib → scale_gp_beta-0.1.0a23/tests/lib/tracing}/test_trace.py +53 -7
  13. {scale_gp_beta-0.1.0a22/tests/lib → scale_gp_beta-0.1.0a23/tests/lib/tracing}/test_tracing.py +2 -2
  14. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/test_client.py +62 -45
  15. scale_gp_beta-0.1.0a22/.release-please-manifest.json +0 -3
  16. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/.gitignore +0 -0
  17. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/CONTRIBUTING.md +0 -0
  18. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/LICENSE +0 -0
  19. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/SECURITY.md +0 -0
  20. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/api.md +0 -0
  21. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/bin/check-release-environment +0 -0
  22. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/bin/publish-pypi +0 -0
  23. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/examples/.keep +0 -0
  24. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/examples/tracing/0_primitives_fibonacci.py +0 -0
  25. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/examples/tracing/1_explicit_use_case.py +0 -0
  26. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/examples/tracing/2_direct_upload.py +0 -0
  27. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/mypy.ini +0 -0
  28. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/noxfile.py +0 -0
  29. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/release-please-config.json +0 -0
  30. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/requirements-dev.lock +0 -0
  31. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/requirements.lock +0 -0
  32. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp/lib/.keep +0 -0
  33. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/__init__.py +0 -0
  34. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_base_client.py +0 -0
  35. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_client.py +0 -0
  36. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_compat.py +0 -0
  37. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_constants.py +0 -0
  38. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_exceptions.py +0 -0
  39. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_files.py +0 -0
  40. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_models.py +0 -0
  41. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_qs.py +0 -0
  42. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_resource.py +0 -0
  43. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_response.py +0 -0
  44. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_streaming.py +0 -0
  45. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_types.py +0 -0
  46. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_utils/__init__.py +0 -0
  47. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_utils/_logs.py +0 -0
  48. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_utils/_proxy.py +0 -0
  49. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_utils/_reflection.py +0 -0
  50. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_utils/_resources_proxy.py +0 -0
  51. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_utils/_streams.py +0 -0
  52. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_utils/_sync.py +0 -0
  53. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_utils/_transform.py +0 -0
  54. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_utils/_typing.py +0 -0
  55. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/_utils/_utils.py +0 -0
  56. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/lib/.keep +0 -0
  57. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/lib/tracing/__init__.py +0 -0
  58. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/lib/tracing/exceptions.py +0 -0
  59. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/lib/tracing/scope.py +0 -0
  60. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/lib/tracing/trace_exporter.py +0 -0
  61. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/lib/tracing/trace_queue_manager.py +0 -0
  62. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/lib/tracing/types.py +0 -0
  63. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/lib/tracing/util.py +0 -0
  64. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/pagination.py +0 -0
  65. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/py.typed +0 -0
  66. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/resources/__init__.py +0 -0
  67. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/resources/chat/__init__.py +0 -0
  68. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/resources/chat/chat.py +0 -0
  69. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/resources/chat/completions.py +0 -0
  70. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/resources/completions.py +0 -0
  71. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/resources/dataset_items.py +0 -0
  72. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/resources/datasets.py +0 -0
  73. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/resources/evaluation_items.py +0 -0
  74. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/resources/evaluations.py +0 -0
  75. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/resources/files/__init__.py +0 -0
  76. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/resources/files/content.py +0 -0
  77. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/resources/files/files.py +0 -0
  78. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/resources/inference.py +0 -0
  79. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/resources/models.py +0 -0
  80. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/resources/spans.py +0 -0
  81. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/__init__.py +0 -0
  82. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/chat/__init__.py +0 -0
  83. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/chat/chat_completion.py +0 -0
  84. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/chat/chat_completion_chunk.py +0 -0
  85. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/chat/completion_create_params.py +0 -0
  86. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/chat/completion_create_response.py +0 -0
  87. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/chat/completion_models_params.py +0 -0
  88. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/chat/completion_models_response.py +0 -0
  89. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/chat/model_definition.py +0 -0
  90. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/completion.py +0 -0
  91. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/completion_create_params.py +0 -0
  92. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/component.py +0 -0
  93. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/component_param.py +0 -0
  94. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/container.py +0 -0
  95. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/container_param.py +0 -0
  96. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/dataset.py +0 -0
  97. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/dataset_create_params.py +0 -0
  98. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/dataset_delete_response.py +0 -0
  99. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/dataset_item.py +0 -0
  100. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/dataset_item_batch_create_params.py +0 -0
  101. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/dataset_item_batch_create_response.py +0 -0
  102. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/dataset_item_delete_response.py +0 -0
  103. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/dataset_item_list_params.py +0 -0
  104. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/dataset_item_retrieve_params.py +0 -0
  105. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/dataset_item_update_params.py +0 -0
  106. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/dataset_list_params.py +0 -0
  107. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/dataset_retrieve_params.py +0 -0
  108. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/dataset_update_params.py +0 -0
  109. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/evaluation.py +0 -0
  110. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/evaluation_create_params.py +0 -0
  111. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/evaluation_delete_response.py +0 -0
  112. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/evaluation_item.py +0 -0
  113. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/evaluation_item_list_params.py +0 -0
  114. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/evaluation_item_retrieve_params.py +0 -0
  115. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/evaluation_list_params.py +0 -0
  116. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/evaluation_retrieve_params.py +0 -0
  117. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/evaluation_task.py +0 -0
  118. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/evaluation_task_param.py +0 -0
  119. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/evaluation_update_params.py +0 -0
  120. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/file.py +0 -0
  121. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/file_create_params.py +0 -0
  122. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/file_delete_response.py +0 -0
  123. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/file_list.py +0 -0
  124. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/file_list_params.py +0 -0
  125. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/file_update_params.py +0 -0
  126. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/files/__init__.py +0 -0
  127. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/inference_create_params.py +0 -0
  128. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/inference_create_response.py +0 -0
  129. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/inference_model.py +0 -0
  130. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/inference_model_list.py +0 -0
  131. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/inference_response.py +0 -0
  132. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/inference_response_chunk.py +0 -0
  133. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/item_locator.py +0 -0
  134. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/item_locator_template.py +0 -0
  135. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/model_create_params.py +0 -0
  136. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/model_delete_response.py +0 -0
  137. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/model_list_params.py +0 -0
  138. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/model_update_params.py +0 -0
  139. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/span.py +0 -0
  140. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/span_batch_params.py +0 -0
  141. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/span_batch_response.py +0 -0
  142. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/span_create_params.py +0 -0
  143. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/span_search_params.py +0 -0
  144. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/span_search_response.py +0 -0
  145. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/span_update_params.py +0 -0
  146. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/span_upsert_batch_params.py +0 -0
  147. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/scale_gp_beta/types/span_upsert_batch_response.py +0 -0
  148. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/src/sgp_dev/lib/.keep +0 -0
  149. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/__init__.py +0 -0
  150. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/api_resources/__init__.py +0 -0
  151. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/api_resources/chat/__init__.py +0 -0
  152. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/api_resources/chat/test_completions.py +0 -0
  153. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/api_resources/files/__init__.py +0 -0
  154. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/api_resources/files/test_content.py +0 -0
  155. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/api_resources/test_completions.py +0 -0
  156. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/api_resources/test_dataset_items.py +0 -0
  157. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/api_resources/test_datasets.py +0 -0
  158. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/api_resources/test_evaluation_items.py +0 -0
  159. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/api_resources/test_evaluations.py +0 -0
  160. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/api_resources/test_files.py +0 -0
  161. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/api_resources/test_inference.py +0 -0
  162. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/api_resources/test_models.py +0 -0
  163. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/api_resources/test_spans.py +0 -0
  164. {scale_gp_beta-0.1.0a22/tests/lib → scale_gp_beta-0.1.0a23/tests/lib/tracing}/test_trace_exporter.py +0 -0
  165. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/sample_file.txt +0 -0
  166. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/test_deepcopy.py +0 -0
  167. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/test_extract_files.py +0 -0
  168. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/test_files.py +0 -0
  169. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/test_models.py +0 -0
  170. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/test_qs.py +0 -0
  171. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/test_required_args.py +0 -0
  172. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/test_response.py +0 -0
  173. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/test_streaming.py +0 -0
  174. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/test_transform.py +0 -0
  175. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/test_utils/test_proxy.py +0 -0
  176. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/test_utils/test_typing.py +0 -0
  177. {scale_gp_beta-0.1.0a22 → scale_gp_beta-0.1.0a23}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.1.0-alpha.23"
3
+ }
@@ -1,5 +1,31 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.0-alpha.23 (2025-06-20)
4
+
5
+ Full Changelog: [v0.1.0-alpha.22...v0.1.0-alpha.23](https://github.com/scaleapi/sgp-python-beta/compare/v0.1.0-alpha.22...v0.1.0-alpha.23)
6
+
7
+ ### Features
8
+
9
+ * Added set_error() to trace and span. ([#114](https://github.com/scaleapi/sgp-python-beta/issues/114)) ([2f08610](https://github.com/scaleapi/sgp-python-beta/commit/2f086103d8eed97a27f744e803717527ef64875c))
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * **tests:** fix: tests which call HTTP endpoints directly with the example parameters ([2a67032](https://github.com/scaleapi/sgp-python-beta/commit/2a6703258180ed241018002e3092d90d7974da56))
15
+
16
+
17
+ ### Chores
18
+
19
+ * **ci:** enable for pull requests ([05e2eb0](https://github.com/scaleapi/sgp-python-beta/commit/05e2eb00b7d50d7c4d46d488f5b64cb9d2dcbb0d))
20
+ * **internal:** codegen related update ([9ae2242](https://github.com/scaleapi/sgp-python-beta/commit/9ae2242e355b8f1cfbaa28eab55d4b9ef7776833))
21
+ * **internal:** update conftest.py ([357f5ed](https://github.com/scaleapi/sgp-python-beta/commit/357f5ed5a3447bc889e5260911d8b4200c5f982f))
22
+ * **tests:** add tests for httpx client instantiation & proxies ([6ae6d18](https://github.com/scaleapi/sgp-python-beta/commit/6ae6d18ff82de7bec888e6617fdf9f54be0f4aa6))
23
+
24
+
25
+ ### Documentation
26
+
27
+ * **client:** fix httpx.Timeout documentation reference ([dc2482b](https://github.com/scaleapi/sgp-python-beta/commit/dc2482bf483a51b0178db63d1a4dd24ed97e351b))
28
+
3
29
  ## 0.1.0-alpha.22 (2025-06-16)
4
30
 
5
31
  Full Changelog: [v0.1.0-alpha.21...v0.1.0-alpha.22](https://github.com/scaleapi/sgp-python-beta/compare/v0.1.0-alpha.21...v0.1.0-alpha.22)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: scale-gp-beta
3
- Version: 0.1.0a22
3
+ Version: 0.1.0a23
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
@@ -31,7 +31,7 @@ Description-Content-Type: text/markdown
31
31
 
32
32
  # Scale GP Python API library
33
33
 
34
- [![PyPI version](https://img.shields.io/pypi/v/scale-gp-beta.svg)](https://pypi.org/project/scale-gp-beta/)
34
+ [![PyPI version](https://github.com/scaleapi/sgp-python-beta/tree/main/<https://img.shields.io/pypi/v/scale-gp-beta.svg?label=pypi%20(stable)>)](https://pypi.org/project/scale-gp-beta/)
35
35
 
36
36
  The Scale GP Python library provides convenient access to the Scale GP REST API from any Python 3.8+
37
37
  application. The library includes type definitions for all request params and response fields,
@@ -578,7 +578,7 @@ client.with_options(max_retries=5).chat.completions.create(
578
578
  ### Timeouts
579
579
 
580
580
  By default requests time out after 1 minute. You can configure this with a `timeout` option,
581
- which accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/#fine-tuning-the-configuration) object:
581
+ which accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/timeouts/#fine-tuning-the-configuration) object:
582
582
 
583
583
  ```python
584
584
  from scale_gp_beta import SGPClient
@@ -1,6 +1,6 @@
1
1
  # Scale GP Python API library
2
2
 
3
- [![PyPI version](https://img.shields.io/pypi/v/scale-gp-beta.svg)](https://pypi.org/project/scale-gp-beta/)
3
+ [![PyPI version](<https://img.shields.io/pypi/v/scale-gp-beta.svg?label=pypi%20(stable)>)](https://pypi.org/project/scale-gp-beta/)
4
4
 
5
5
  The Scale GP Python library provides convenient access to the Scale GP REST API from any Python 3.8+
6
6
  application. The library includes type definitions for all request params and response fields,
@@ -547,7 +547,7 @@ client.with_options(max_retries=5).chat.completions.create(
547
547
  ### Timeouts
548
548
 
549
549
  By default requests time out after 1 minute. You can configure this with a `timeout` option,
550
- which accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/#fine-tuning-the-configuration) object:
550
+ which accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/timeouts/#fine-tuning-the-configuration) object:
551
551
 
552
552
  ```python
553
553
  from scale_gp_beta import SGPClient
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "scale-gp-beta"
3
- version = "0.1.0-alpha.22"
3
+ version = "0.1.0-alpha.23"
4
4
  description = "The official Python library for the Scale GP 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__ = "scale_gp_beta"
4
- __version__ = "0.1.0-alpha.22" # x-release-please-version
4
+ __version__ = "0.1.0-alpha.23" # x-release-please-version
@@ -59,18 +59,18 @@ class BaseSpan:
59
59
  metadata: Optional[SpanMetadataParam] = None,
60
60
  span_type: SpanTypeLiterals = "STANDALONE"
61
61
  ):
62
- self.name = name
63
- self.trace_id = trace_id or "no_trace_id"
64
- self.group_id = group_id
65
- self.span_id: str = span_id or generate_span_id()
66
- self.parent_span_id = parent_span_id
62
+ self._name = name
63
+ self._trace_id: str = trace_id or "no_trace_id"
64
+ self._group_id = group_id
65
+ self._span_id: str = span_id or generate_span_id()
66
+ self._parent_span_id = parent_span_id
67
67
  self.start_time: Optional[str] = None
68
68
  self.end_time: Optional[str] = None
69
- self.input: SpanInputParam = input or {}
70
- self.output: SpanOutputParam = output or {}
71
- self.metadata: SpanMetadataParam = metadata or {}
72
- self.span_type: SpanTypeLiterals = span_type
73
- self.status: SpanStatusLiterals = "SUCCESS"
69
+ self._input: SpanInputParam = input or {}
70
+ self._output: SpanOutputParam = output or {}
71
+ self._metadata: SpanMetadataParam = metadata or {}
72
+ self._span_type: SpanTypeLiterals = span_type
73
+ self._status: SpanStatusLiterals = "SUCCESS"
74
74
  self._queue_manager = queue_manager
75
75
 
76
76
  self._contextvar_token: Optional[contextvars.Token[Optional[BaseSpan]]] = None
@@ -84,6 +84,73 @@ class BaseSpan:
84
84
  def flush(self, blocking: bool = True) -> None:
85
85
  pass
86
86
 
87
+ @property
88
+ def name(self) -> str:
89
+ return self._name
90
+
91
+ @property
92
+ def trace_id(self) -> str:
93
+ return self._trace_id
94
+
95
+ @property
96
+ def group_id(self) -> Optional[str]:
97
+ return self._group_id
98
+
99
+ @property
100
+ def span_id(self) -> str:
101
+ return self._span_id
102
+
103
+ @property
104
+ def parent_span_id(self) -> Optional[str]:
105
+ return self._parent_span_id
106
+
107
+ @property
108
+ def status(self) -> SpanStatusLiterals:
109
+ return self._status
110
+
111
+ @property
112
+ def span_type(self) -> SpanTypeLiterals:
113
+ return self._span_type
114
+
115
+ # with setters
116
+ @property
117
+ def metadata(self) -> SpanMetadataParam:
118
+ return self._metadata
119
+
120
+ @metadata.setter
121
+ def metadata(self, value: SpanMetadataParam) -> None:
122
+ self._metadata = value
123
+
124
+ @property
125
+ def input(self) -> SpanInputParam:
126
+ return self._input
127
+
128
+ @input.setter
129
+ def input(self, value: SpanInputParam) -> None:
130
+ self._input = value
131
+
132
+ @property
133
+ def output(self) -> SpanOutputParam:
134
+ return self._output
135
+
136
+ @output.setter
137
+ def output(self, value: SpanOutputParam) -> None:
138
+ self._output = value
139
+
140
+ def set_error(
141
+ self,
142
+ error_type: Optional[str] = None,
143
+ error_message: Optional[str] = None,
144
+ exception: Optional[BaseException] = None,
145
+ ) -> None:
146
+ # Naively record details in metadata for now, note that error capture only supported in context manager
147
+ exception_type = type(exception).__name__ if exception else None
148
+ exception_message = str(exception) if exception else None
149
+ self._status = "ERROR"
150
+ self.metadata["error"] = True
151
+ self.metadata["error_type"] = error_type or exception_type
152
+ self.metadata["error_message"] = error_message or exception_message
153
+
87
154
  def __enter__(self) -> BaseSpan:
88
155
  self.start()
89
156
  return self
@@ -94,13 +161,9 @@ class BaseSpan:
94
161
  exc_val: Optional[BaseException],
95
162
  exc_tb: Optional[TracebackType]
96
163
  ) -> None:
97
- # Naively record details in metadata for now, note that error capture only supported in context manager
98
164
  # TODO: support error observations when using direct span.start() and span.end()
99
165
  if exc_type is not None:
100
- self.metadata["error"] = True
101
- self.metadata["error.type"] = exc_type.__name__
102
- self.metadata["error.message"] = str(exc_val)
103
- self.status = "ERROR"
166
+ self.set_error(exception=exc_val)
104
167
  self.end()
105
168
 
106
169
  def to_request_params(self) -> SpanCreateRequest:
@@ -203,7 +266,7 @@ class Span(BaseSpan):
203
266
  ):
204
267
  super().__init__(name, trace_id, queue_manager, span_id, parent_span_id, group_id, input, output, metadata, span_type)
205
268
  self._queue_manager: TraceQueueManager = queue_manager
206
- self.trace_id: str = trace_id
269
+ self._trace_id: str = trace_id
207
270
 
208
271
  @override
209
272
  def flush(self, blocking: bool = True) -> None:
@@ -4,23 +4,30 @@ from types import TracebackType
4
4
  from typing import Type, Optional
5
5
  from typing_extensions import override
6
6
 
7
- from .span import Span, NoOpSpan
7
+ from .span import Span, BaseSpan, NoOpSpan
8
8
  from .util import generate_trace_id
9
9
  from .scope import Scope
10
- from .types import SpanInputParam, SpanOutputParam, SpanTypeLiterals, SpanMetadataParam
10
+ from .types import SpanInputParam, SpanOutputParam, SpanTypeLiterals, SpanMetadataParam, SpanStatusLiterals
11
11
  from .trace_queue_manager import TraceQueueManager
12
12
 
13
13
  log: logging.Logger = logging.getLogger(__name__)
14
14
 
15
15
 
16
16
  class BaseTrace:
17
- def __init__(self, queue_manager: Optional[TraceQueueManager], trace_id: Optional[str] = None):
18
- self.trace_id = trace_id or generate_trace_id()
17
+ def __init__(
18
+ self,
19
+ queue_manager: Optional[TraceQueueManager],
20
+ root_span: BaseSpan,
21
+ trace_id: str
22
+ ) -> None:
23
+ self._trace_id = trace_id
19
24
  self.queue_manager = queue_manager
20
25
 
21
26
  self._in_progress = False
22
27
  self._contextvar_token: Optional[contextvars.Token[Optional[BaseTrace]]] = None
23
28
 
29
+ self.root_span = root_span
30
+
24
31
  def start(self) -> None:
25
32
  pass
26
33
 
@@ -30,8 +37,62 @@ class BaseTrace:
30
37
  def flush(self, blocking: bool = True) -> None:
31
38
  pass
32
39
 
40
+ @property
41
+ def metadata(self) -> SpanMetadataParam:
42
+ return self.root_span.metadata
43
+
44
+ @metadata.setter
45
+ def metadata(self, value: SpanMetadataParam) -> None:
46
+ self.root_span.metadata = value
47
+
48
+ @property
49
+ def input(self) -> SpanInputParam:
50
+ return self.root_span.input
51
+
52
+ @input.setter
53
+ def input(self, value: SpanInputParam) -> None:
54
+ self.root_span.input = value
55
+
56
+ @property
57
+ def output(self) -> SpanOutputParam:
58
+ return self.root_span.output
59
+
60
+ @output.setter
61
+ def output(self, value: SpanOutputParam) -> None:
62
+ self.root_span.output = value
63
+
64
+ # no setters
65
+ @property
66
+ def name(self) -> Optional[str]:
67
+ return self.root_span.name
68
+
69
+ @property
70
+ def span_id(self) -> Optional[str]:
71
+ return self.root_span.span_id
72
+
73
+ @property
74
+ def trace_id(self) -> Optional[str]:
75
+ return self._trace_id
76
+
77
+ @property
33
78
  def group_id(self) -> Optional[str]:
34
- return None
79
+ return self.root_span.group_id
80
+
81
+ @property
82
+ def span_type(self) -> SpanTypeLiterals:
83
+ return self.root_span.span_type
84
+
85
+ @property
86
+ def status(self) -> SpanStatusLiterals:
87
+ return self.root_span.status
88
+
89
+ def set_error(
90
+ self,
91
+ error_type: Optional[str] = None,
92
+ error_message: Optional[str] = None,
93
+ exception: Optional[BaseException] = None,
94
+ ) -> None:
95
+ self.root_span.set_error(error_type=error_type, error_message=error_message, exception=exception)
35
96
 
36
97
  def __enter__(self) -> "BaseTrace":
37
98
  self.start()
@@ -47,7 +108,12 @@ class BaseTrace:
47
108
 
48
109
  @override
49
110
  def __repr__(self) -> str:
50
- return f"{self.__class__.__name__}(trace_id='{self.trace_id})"
111
+ return (
112
+ f"{self.__class__.__name__}("
113
+ f"trace_id='{self.trace_id}', "
114
+ f"root_span='{repr(self.root_span)}', "
115
+ ")"
116
+ )
51
117
 
52
118
  @override
53
119
  def __str__(self) -> str:
@@ -67,12 +133,11 @@ class NoOpTrace(BaseTrace):
67
133
  output: Optional[SpanOutputParam] = None,
68
134
  metadata: Optional[SpanMetadataParam] = None,
69
135
  ):
70
- super().__init__(queue_manager, trace_id)
71
-
72
- self.root_span = NoOpSpan(
136
+ trace_id = trace_id or generate_trace_id()
137
+ root_span = NoOpSpan(
73
138
  name=name,
74
139
  span_id=span_id,
75
- trace_id=self.trace_id,
140
+ trace_id=trace_id,
76
141
  group_id=group_id,
77
142
  queue_manager=queue_manager,
78
143
  metadata=metadata,
@@ -80,15 +145,7 @@ class NoOpTrace(BaseTrace):
80
145
  input=input,
81
146
  output=output,
82
147
  )
83
-
84
- @override
85
- def __repr__(self) -> str:
86
- return (
87
- f"{self.__class__.__name__}("
88
- f"trace_id='{self.trace_id}', "
89
- f"root_span='{repr(self.root_span)}', "
90
- ")"
91
- )
148
+ super().__init__(queue_manager, root_span, trace_id)
92
149
 
93
150
  @override
94
151
  def start(self) -> None:
@@ -98,10 +155,6 @@ class NoOpTrace(BaseTrace):
98
155
  def end(self) -> None:
99
156
  self.root_span.end()
100
157
 
101
- @override
102
- def group_id(self) -> Optional[str]:
103
- return self.root_span.group_id
104
-
105
158
 
106
159
  class Trace(BaseTrace):
107
160
  def __init__(
@@ -116,13 +169,11 @@ class Trace(BaseTrace):
116
169
  output: Optional[SpanOutputParam] = None,
117
170
  metadata: Optional[SpanMetadataParam] = None,
118
171
  ):
119
- super().__init__(queue_manager, trace_id)
120
- self.queue_manager: TraceQueueManager = queue_manager
121
-
122
- self.root_span = Span(
172
+ trace_id = trace_id or generate_trace_id()
173
+ root_span = Span(
123
174
  name=name,
124
175
  span_id=span_id,
125
- trace_id=self.trace_id,
176
+ trace_id=trace_id,
126
177
  group_id=group_id,
127
178
  queue_manager=queue_manager,
128
179
  metadata=metadata,
@@ -130,6 +181,8 @@ class Trace(BaseTrace):
130
181
  input=input,
131
182
  output=output,
132
183
  )
184
+ super().__init__(queue_manager, root_span, trace_id)
185
+ self.queue_manager: TraceQueueManager = queue_manager
133
186
 
134
187
  @override
135
188
  def start(self) -> None:
@@ -162,16 +215,3 @@ class Trace(BaseTrace):
162
215
  @override
163
216
  def flush(self, blocking: bool = True) -> None:
164
217
  self.root_span.flush(blocking=blocking)
165
-
166
- @override
167
- def group_id(self) -> Optional[str]:
168
- return self.root_span.group_id
169
-
170
- @override
171
- def __repr__(self) -> str:
172
- return (
173
- f"{self.__class__.__name__}("
174
- f"trace_id='{self.trace_id}', "
175
- f"root_span='{repr(self.root_span)}', "
176
- ")"
177
- )
@@ -182,7 +182,7 @@ def create_span(
182
182
 
183
183
  scoped_trace = current_trace()
184
184
  scoped_trace_id = scoped_trace.trace_id if scoped_trace else None
185
- scoped_group_id = scoped_trace.group_id() if scoped_trace else None
185
+ scoped_group_id = scoped_trace.group_id if scoped_trace else None
186
186
  scoped_span = current_span()
187
187
  scoped_span_id = scoped_span.span_id if scoped_span else None
188
188
 
@@ -1,3 +1,5 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
1
3
  from __future__ import annotations
2
4
 
3
5
  import os
@@ -82,8 +82,8 @@ class TestBaseSpan:
82
82
 
83
83
  assert span.metadata is not None
84
84
  assert span.metadata["error"] is True
85
- assert span.metadata["error.type"] == "ValueError"
86
- assert span.metadata["error.message"] == "Test error"
85
+ assert span.metadata["error_type"] == "ValueError"
86
+ assert span.metadata["error_message"] == "Test error"
87
87
  assert span.start_time == "start-ts"
88
88
  assert span.end_time == "end-ts"
89
89
  assert span.status == "ERROR"
@@ -325,6 +325,6 @@ class TestSpan:
325
325
  # NOTE: will likely change this functionality soon
326
326
  assert span.metadata is not None
327
327
  assert span.metadata["error"] is True
328
- assert span.metadata["error.type"] == "RuntimeError"
329
- assert span.metadata["error.message"] == "Operational error"
328
+ assert span.metadata["error_type"] == "RuntimeError"
329
+ assert span.metadata["error_message"] == "Operational error"
330
330
  assert span.status == "ERROR"
@@ -6,6 +6,7 @@ from unittest.mock import Mock, MagicMock, patch
6
6
  import pytest
7
7
  from pytest import MonkeyPatch, LogCaptureFixture
8
8
 
9
+ from scale_gp_beta.lib.tracing.span import NoOpSpan
9
10
  from scale_gp_beta.lib.tracing.trace import Trace, BaseTrace, NoOpTrace
10
11
  from scale_gp_beta.lib.tracing.trace_queue_manager import TraceQueueManager
11
12
 
@@ -52,23 +53,21 @@ def patched_trace_utils(monkeypatch: MonkeyPatch) -> Dict[str, Mock]:
52
53
 
53
54
 
54
55
  class TestBaseTrace:
55
- def test_initialization_defaults(self, mock_queue_manager: Mock, patched_trace_utils: Dict[str, Mock]) -> None:
56
- trace = BaseTrace(queue_manager=mock_queue_manager)
56
+ def test_initialization_defaults(self, mock_queue_manager: Mock) -> None:
57
+ trace = BaseTrace(queue_manager=mock_queue_manager, trace_id="test-trace-id", root_span=NoOpSpan("test-root"))
57
58
  assert trace.trace_id == "test-trace-id"
58
59
  assert trace.queue_manager == mock_queue_manager
59
60
  assert trace._in_progress is False
60
61
  assert trace._contextvar_token is None
61
- patched_trace_utils["generate_trace_id"].assert_called_once()
62
-
63
62
 
64
63
  def test_initialization_with_custom_trace_id(self, mock_queue_manager: Mock) -> None:
65
64
  custom_id = "my-custom-trace-id"
66
- trace = BaseTrace(queue_manager=mock_queue_manager, trace_id=custom_id)
65
+ trace = BaseTrace(queue_manager=mock_queue_manager, trace_id=custom_id, root_span=NoOpSpan("test-root"))
67
66
  assert trace.trace_id == custom_id
68
67
  assert trace.queue_manager == mock_queue_manager
69
68
 
70
69
  def test_context_manager_calls_start_end(self, mock_queue_manager: Mock) -> None:
71
- trace = BaseTrace(queue_manager=mock_queue_manager)
70
+ trace = BaseTrace(queue_manager=mock_queue_manager, trace_id="test-trace", root_span=NoOpSpan("test-root"))
72
71
  trace.start = Mock()
73
72
  trace.end = Mock()
74
73
 
@@ -79,7 +78,7 @@ class TestBaseTrace:
79
78
  trace.end.assert_called_once()
80
79
 
81
80
  def test_context_manager_propagates_exception(self, mock_queue_manager: Mock) -> None:
82
- trace = BaseTrace(queue_manager=mock_queue_manager)
81
+ trace = BaseTrace(queue_manager=mock_queue_manager, trace_id="test-trace", root_span=NoOpSpan("test-root"))
83
82
  trace.end = Mock()
84
83
 
85
84
  with pytest.raises(ValueError, match="Test error in trace"):
@@ -255,3 +254,50 @@ class TestTrace:
255
254
  mock_scope_reset_current_trace.assert_called_once_with(expected_token)
256
255
  mock_scope_reset_current_span.assert_called_once_with(expected_span_token)
257
256
  assert trace._contextvar_token is None
257
+
258
+ def test_updating_trace_status(
259
+ self,
260
+ mock_queue_manager: Mock,
261
+ patched_trace_utils: Dict[str, Mock] # noqa: ARG002
262
+ ) -> None:
263
+ trace = Trace(queue_manager=mock_queue_manager, name="request_123")
264
+ with pytest.raises(AttributeError):
265
+ trace.status = "ERROR" # type: ignore[attr-defined]
266
+ assert trace.root_span.status == "SUCCESS"
267
+
268
+
269
+ def test_setting_trace_metadata(
270
+ self,
271
+ mock_queue_manager: Mock,
272
+ patched_trace_utils: Dict[str, Mock] # noqa: ARG002
273
+ ) -> None:
274
+ trace = Trace(queue_manager=mock_queue_manager, name="request_123")
275
+ trace.metadata = {"foo": "bar"}
276
+ trace.metadata["other"] = "baz"
277
+ assert trace.root_span.metadata == {"foo": "bar", "other": "baz"}
278
+
279
+ def test_setting_trace_input(
280
+ self,
281
+ mock_queue_manager: Mock,
282
+ patched_trace_utils: Dict[str, Mock] # noqa: ARG002
283
+ ) -> None:
284
+ trace = Trace(queue_manager=mock_queue_manager, name="request_123")
285
+ trace.input = {"foo": "bar"}
286
+ assert trace.root_span.input == {"foo": "bar"}
287
+
288
+ def test_setting_trace_output(
289
+ self,
290
+ mock_queue_manager: Mock,
291
+ patched_trace_utils: Dict[str, Mock] # noqa: ARG002
292
+ ) -> None:
293
+ trace = Trace(queue_manager=mock_queue_manager, name="request_123")
294
+ trace.output = {"foo": "bar"}
295
+ assert trace.root_span.output == {"foo": "bar"}
296
+
297
+ def test_set_error(self, mock_queue_manager: Mock) -> None:
298
+ trace = Trace(queue_manager=mock_queue_manager, name="request_123")
299
+ e = AttributeError("this is a test")
300
+ assert trace.metadata == {}
301
+ trace.set_error(exception=e)
302
+
303
+ assert trace.metadata == {"error": True, "error_message": "this is a test", "error_type": "AttributeError"}
@@ -321,7 +321,7 @@ class TestCreateSpan:
321
321
  name="span_uses_scope_trace",
322
322
  span_id=None,
323
323
  parent_span_id=None,
324
- group_id=mock_active_trace_instance.group_id(),
324
+ group_id=mock_active_trace_instance.group_id,
325
325
  trace_id=mock_active_trace_instance.trace_id,
326
326
  input={}, output={}, metadata={},
327
327
  queue_manager=mock_queue_manager_instance,
@@ -355,7 +355,7 @@ class TestCreateSpan:
355
355
  span_id=None,
356
356
  parent_span_id=mock_active_span_instance.span_id,
357
357
  trace_id=mock_active_trace_instance.trace_id,
358
- group_id=mock_active_trace_instance.group_id(),
358
+ group_id=mock_active_trace_instance.group_id,
359
359
  input={}, output={}, metadata={},
360
360
  queue_manager=mock_queue_manager_instance,
361
361
  span_type="STANDALONE"