ragaai-catalyst 2.1.5b35__tar.gz → 2.1.5b37__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 (174) hide show
  1. {ragaai_catalyst-2.1.5b35/ragaai_catalyst.egg-info → ragaai_catalyst-2.1.5b37}/PKG-INFO +5 -1
  2. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/pyproject.toml +6 -2
  3. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/tracers/base.py +20 -20
  4. ragaai_catalyst-2.1.5b37/ragaai_catalyst/tracers/agentic_tracing/upload/__init__.py +0 -0
  5. ragaai_catalyst-2.1.5b37/ragaai_catalyst/tracers/agentic_tracing/upload/trace_uploader.py +358 -0
  6. ragaai_catalyst-2.1.5b37/ragaai_catalyst/tracers/exporters/__init__.py +7 -0
  7. ragaai_catalyst-2.1.5b37/ragaai_catalyst/tracers/exporters/dynamic_trace_exporter.py +145 -0
  8. ragaai_catalyst-2.1.5b37/ragaai_catalyst/tracers/exporters/ragaai_trace_exporter.py +121 -0
  9. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/tracer.py +117 -23
  10. ragaai_catalyst-2.1.5b37/ragaai_catalyst/tracers/utils/trace_json_converter.py +266 -0
  11. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37/ragaai_catalyst.egg-info}/PKG-INFO +5 -1
  12. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst.egg-info/SOURCES.txt +4 -0
  13. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst.egg-info/requires.txt +4 -0
  14. ragaai_catalyst-2.1.5b35/ragaai_catalyst/tracers/agentic_tracing/upload/trace_uploader.py +0 -684
  15. ragaai_catalyst-2.1.5b35/ragaai_catalyst/tracers/exporters/__init__.py +0 -5
  16. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  17. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  18. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  19. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/.gitignore +0 -0
  20. /ragaai_catalyst-2.1.5b35/ragaai_catalyst/tracers/agentic_tracing/data/__init__.py → /ragaai_catalyst-2.1.5b37/.gitmodules +0 -0
  21. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/LICENSE +0 -0
  22. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/README.md +0 -0
  23. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/docs/dataset_management.md +0 -0
  24. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/docs/img/autheticate.gif +0 -0
  25. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/docs/img/create_project.gif +0 -0
  26. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/docs/img/custom_metrics.png +0 -0
  27. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/docs/img/dataset.gif +0 -0
  28. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/docs/img/dataset.png +0 -0
  29. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/docs/img/evaluation.gif +0 -0
  30. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/docs/img/evaluation.png +0 -0
  31. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/docs/img/guardrails.png +0 -0
  32. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/docs/img/last_main.png +0 -0
  33. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/docs/img/main.png +0 -0
  34. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/docs/img/projects_new.png +0 -0
  35. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/docs/img/trace_comp.png +0 -0
  36. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/docs/prompt_management.md +0 -0
  37. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/docs/trace_management.md +0 -0
  38. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/FinancialAnalysisSystem.ipynb +0 -0
  39. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/TravelPlanner.ipynb +0 -0
  40. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/agentic_rag.py +0 -0
  41. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/custom_tracer_example.py +0 -0
  42. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/customer_support.py +0 -0
  43. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/finance.py +0 -0
  44. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/langgraph_examples/agentic_rag.py +0 -0
  45. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/langgraph_examples/customer_support.py +0 -0
  46. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/langgraph_examples/multi_tool.py +0 -0
  47. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/langgraph_examples/planning_agent.py +0 -0
  48. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/langgraph_multi_tools.py +0 -0
  49. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/llamaindex_examples/azureopenai_react_agent.py +0 -0
  50. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/llamaindex_examples/function_calling_agent.ipynb +0 -0
  51. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/llamaindex_examples/joke_gen_critique.py +0 -0
  52. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/llamaindex_examples/joke_gen_critique_anthropic.py +0 -0
  53. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/llamaindex_examples/joke_gen_critique_async.py +0 -0
  54. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/llamaindex_examples/joke_gen_critique_azureopenai.py +0 -0
  55. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/llamaindex_examples/joke_gen_critique_gemini.py +0 -0
  56. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/llamaindex_examples/joke_gen_critique_litellm.py +0 -0
  57. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/llamaindex_examples/joke_gen_critque_vertex.py +0 -0
  58. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/llamaindex_examples/react_agent.ipynb +0 -0
  59. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/llamaindex_examples/tool_call_agent.py +0 -0
  60. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/planning_agent.py +0 -0
  61. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/prompt_management_litellm.ipynb +0 -0
  62. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/prompt_management_openai.ipynb +0 -0
  63. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/sync_sample_call.py +0 -0
  64. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/travel_agent/agents.py +0 -0
  65. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/travel_agent/config.py +0 -0
  66. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/travel_agent/main.py +0 -0
  67. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/examples/travel_agent/tools.py +0 -0
  68. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/__init__.py +0 -0
  69. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/_version.py +0 -0
  70. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/dataset.py +0 -0
  71. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/evaluation.py +0 -0
  72. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/experiment.py +0 -0
  73. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/guard_executor.py +0 -0
  74. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/guardrails_manager.py +0 -0
  75. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/internal_api_completion.py +0 -0
  76. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/prompt_manager.py +0 -0
  77. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/proxy_call.py +0 -0
  78. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/ragaai_catalyst.py +0 -0
  79. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/redteaming/__init__.py +0 -0
  80. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/redteaming/config/detectors.toml +0 -0
  81. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/redteaming/data_generator/scenario_generator.py +0 -0
  82. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/redteaming/data_generator/test_case_generator.py +0 -0
  83. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/redteaming/evaluator.py +0 -0
  84. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/redteaming/llm_generator.py +0 -0
  85. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/redteaming/llm_generator_old.py +0 -0
  86. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/redteaming/red_teaming.py +0 -0
  87. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/redteaming/requirements.txt +0 -0
  88. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/redteaming/tests/grok.ipynb +0 -0
  89. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/redteaming/tests/stereotype.ipynb +0 -0
  90. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/redteaming/upload_result.py +0 -0
  91. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/redteaming/utils/issue_description.py +0 -0
  92. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/redteaming/utils/rt.png +0 -0
  93. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/redteaming_old.py +0 -0
  94. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/synthetic_data_generation.py +0 -0
  95. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/__init__.py +0 -0
  96. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/README.md +0 -0
  97. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/__init__.py +0 -0
  98. {ragaai_catalyst-2.1.5b35/ragaai_catalyst/tracers/agentic_tracing/tests → ragaai_catalyst-2.1.5b37/ragaai_catalyst/tracers/agentic_tracing/data}/__init__.py +0 -0
  99. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/data/data_structure.py +0 -0
  100. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/tests/FinancialAnalysisSystem.ipynb +0 -0
  101. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/tests/GameActivityEventPlanner.ipynb +0 -0
  102. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/tests/TravelPlanner.ipynb +0 -0
  103. {ragaai_catalyst-2.1.5b35/ragaai_catalyst/tracers/agentic_tracing/tracers → ragaai_catalyst-2.1.5b37/ragaai_catalyst/tracers/agentic_tracing/tests}/__init__.py +0 -0
  104. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/tests/ai_travel_agent.py +0 -0
  105. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/tests/unique_decorator_test.py +0 -0
  106. {ragaai_catalyst-2.1.5b35/ragaai_catalyst/tracers/agentic_tracing/upload → ragaai_catalyst-2.1.5b37/ragaai_catalyst/tracers/agentic_tracing/tracers}/__init__.py +0 -0
  107. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/tracers/agent_tracer.py +0 -0
  108. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/tracers/custom_tracer.py +0 -0
  109. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/tracers/langgraph_tracer.py +0 -0
  110. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/tracers/llm_tracer.py +0 -0
  111. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/tracers/main_tracer.py +0 -0
  112. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/tracers/network_tracer.py +0 -0
  113. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/tracers/tool_tracer.py +0 -0
  114. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/tracers/user_interaction_tracer.py +0 -0
  115. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/upload/upload_agentic_traces.py +0 -0
  116. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/upload/upload_code.py +0 -0
  117. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/upload/upload_local_metric.py +0 -0
  118. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/upload/upload_trace_metric.py +0 -0
  119. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/utils/__init__.py +0 -0
  120. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/utils/api_utils.py +0 -0
  121. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/utils/create_dataset_schema.py +0 -0
  122. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/utils/file_name_tracker.py +0 -0
  123. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/utils/generic.py +0 -0
  124. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/utils/get_user_trace_metrics.py +0 -0
  125. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/utils/llm_utils.py +0 -0
  126. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/utils/model_costs.json +0 -0
  127. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/utils/span_attributes.py +0 -0
  128. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/utils/supported_llm_provider.toml +0 -0
  129. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/utils/system_monitor.py +0 -0
  130. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/utils/trace_utils.py +0 -0
  131. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/utils/unique_decorator.py +0 -0
  132. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/agentic_tracing/utils/zip_list_of_unique_files.py +0 -0
  133. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/distributed.py +0 -0
  134. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/exporters/file_span_exporter.py +0 -0
  135. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/exporters/raga_exporter.py +0 -0
  136. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/instrumentators/__init__.py +0 -0
  137. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/instrumentators/langchain.py +0 -0
  138. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/instrumentators/llamaindex.py +0 -0
  139. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/instrumentators/openai.py +0 -0
  140. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/langchain_callback.py +0 -0
  141. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/llamaindex_callback.py +0 -0
  142. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/llamaindex_instrumentation.py +0 -0
  143. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/upload_traces.py +0 -0
  144. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/utils/__init__.py +0 -0
  145. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/utils/convert_langchain_callbacks_output.py +0 -0
  146. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/utils/convert_llama_instru_callback.py +0 -0
  147. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/utils/extraction_logic_llama_index.py +0 -0
  148. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/utils/langchain_tracer_extraction_logic.py +0 -0
  149. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/utils/model_prices_and_context_window_backup.json +0 -0
  150. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/tracers/utils/utils.py +0 -0
  151. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst/utils.py +0 -0
  152. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst.egg-info/dependency_links.txt +0 -0
  153. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/ragaai_catalyst.egg-info/top_level.txt +0 -0
  154. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/requirements.txt +0 -0
  155. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/setup.cfg +0 -0
  156. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/test/test_catalyst/autonomous_research_agent/.env.example +0 -0
  157. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/test/test_catalyst/autonomous_research_agent/agents/base_agent.py +0 -0
  158. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/test/test_catalyst/autonomous_research_agent/agents/coordinator.py +0 -0
  159. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/test/test_catalyst/autonomous_research_agent/agents/discovery.py +0 -0
  160. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/test/test_catalyst/autonomous_research_agent/agents/synthesis.py +0 -0
  161. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/test/test_catalyst/autonomous_research_agent/research_script.py +0 -0
  162. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/test/test_catalyst/autonomous_research_agent/utils/llm.py +0 -0
  163. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/test/test_catalyst/test_base_tracer_add_metrics.py +0 -0
  164. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/test/test_catalyst/test_base_tracer_metrics.py +0 -0
  165. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/test/test_catalyst/test_configuration.py +0 -0
  166. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/test/test_catalyst/test_dataset.py +0 -0
  167. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/test/test_catalyst/test_evaluation.py +0 -0
  168. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/test/test_catalyst/test_evaluation_metrics.py +0 -0
  169. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/test/test_catalyst/test_langchain_tracing.py +0 -0
  170. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/test/test_catalyst/test_llm_providers.py +0 -0
  171. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/test/test_catalyst/test_prompt_manager.py +0 -0
  172. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/test/test_catalyst/test_redteaming.py +0 -0
  173. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/test/test_catalyst/test_synthetic_data_generation.py +0 -0
  174. {ragaai_catalyst-2.1.5b35 → ragaai_catalyst-2.1.5b37}/test/test_catalyst/upload_trace_zip_automation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ragaai_catalyst
3
- Version: 2.1.5b35
3
+ Version: 2.1.5b37
4
4
  Summary: RAGA AI CATALYST
5
5
  Author-email: Kiran Scaria <kiran.scaria@raga.ai>, Kedar Gaikwad <kedar.gaikwad@raga.ai>, Dushyant Mahajan <dushyant.mahajan@raga.ai>, Siddhartha Kosti <siddhartha.kosti@raga.ai>, Ritika Goel <ritika.goel@raga.ai>, Vijay Chaurasia <vijay.chaurasia@raga.ai>, Tushar Kumar <tushar.kumar@raga.ai>
6
6
  Requires-Python: <3.13,>=3.9
@@ -38,6 +38,10 @@ Requires-Dist: ipynbname
38
38
  Requires-Dist: tiktoken>=0.7.0
39
39
  Requires-Dist: tomli>=2.0.0
40
40
  Requires-Dist: rich>=13.9.4
41
+ Requires-Dist: openinference-instrumentation-llama-index
42
+ Requires-Dist: opentelemetry-sdk
43
+ Requires-Dist: opentelemetry-exporter-otlp
44
+ Requires-Dist: opentelemetry-proto>=1.12.0
41
45
  Provides-Extra: dev
42
46
  Requires-Dist: pytest; extra == "dev"
43
47
  Requires-Dist: pytest-cov; extra == "dev"
@@ -8,7 +8,7 @@ description = "RAGA AI CATALYST"
8
8
  readme = "README.md"
9
9
  requires-python = ">=3.9,<3.13"
10
10
  # license = {file = "LICENSE"}
11
- version = "2.1.5.b35"
11
+ version = "2.1.5.b37"
12
12
  authors = [
13
13
  {name = "Kiran Scaria", email = "kiran.scaria@raga.ai"},
14
14
  {name = "Kedar Gaikwad", email = "kedar.gaikwad@raga.ai"},
@@ -51,7 +51,11 @@ dependencies = [
51
51
  "ipynbname",
52
52
  "tiktoken>=0.7.0",
53
53
  "tomli>=2.0.0",
54
- "rich>=13.9.4"
54
+ "rich>=13.9.4",
55
+ "openinference-instrumentation-llama-index",
56
+ "opentelemetry-sdk",
57
+ "opentelemetry-exporter-otlp",
58
+ "opentelemetry-proto>=1.12.0"
55
59
  ]
56
60
 
57
61
  [project.optional-dependencies]
@@ -305,7 +305,7 @@ class BaseTracer:
305
305
 
306
306
  logger.debug("Base URL used for uploading: {}".format(self.base_url))
307
307
 
308
- # Submit to background process for uploading
308
+ # Submit to background process for uploading using futures
309
309
  self.upload_task_id = submit_upload_task(
310
310
  filepath=filepath,
311
311
  hash_id=hash_id,
@@ -317,28 +317,28 @@ class BaseTracer:
317
317
  base_url=self.base_url
318
318
  )
319
319
 
320
- # # For backward compatibility
321
- # self._is_uploading = True
320
+ # For backward compatibility
321
+ self._is_uploading = True
322
322
 
323
- # # Start checking for completion if a callback is registered
324
- # if self._upload_completed_callback:
325
- # # Start a thread to check status and call callback when complete
326
- # def check_status_and_callback():
327
- # status = self.get_upload_status()
328
- # if status.get("status") in ["completed", "failed"]:
329
- # self._is_uploading = False
330
- # # Execute callback
331
- # try:
332
- # self._upload_completed_callback(self)
333
- # except Exception as e:
334
- # logger.error(f"Error in upload completion callback: {e}")
335
- # return
323
+ # Start checking for completion if a callback is registered
324
+ if self._upload_completed_callback:
325
+ # Start a thread to check status and call callback when complete
326
+ def check_status_and_callback():
327
+ status = self.get_upload_status()
328
+ if status.get("status") in ["completed", "failed"]:
329
+ self._is_uploading = False
330
+ # Execute callback
331
+ try:
332
+ self._upload_completed_callback(self)
333
+ except Exception as e:
334
+ logger.error(f"Error in upload completion callback: {e}")
335
+ return
336
336
 
337
- # # Check again after a delay
338
- # threading.Timer(5.0, check_status_and_callback).start()
337
+ # Check again after a delay
338
+ threading.Timer(5.0, check_status_and_callback).start()
339
339
 
340
- # # Start checking
341
- # threading.Timer(5.0, check_status_and_callback).start()
340
+ # Start checking
341
+ threading.Timer(5.0, check_status_and_callback).start()
342
342
 
343
343
  logger.info(f"Submitted upload task with ID: {self.upload_task_id}")
344
344
 
@@ -0,0 +1,358 @@
1
+ """
2
+ trace_uploader.py - A dedicated process for handling trace uploads
3
+ """
4
+
5
+ import os
6
+ import sys
7
+ import json
8
+ import time
9
+ import signal
10
+ import logging
11
+ import argparse
12
+ import tempfile
13
+ from pathlib import Path
14
+ import multiprocessing
15
+ import queue
16
+ from datetime import datetime
17
+ import atexit
18
+ import glob
19
+ from logging.handlers import RotatingFileHandler
20
+ import concurrent.futures
21
+ from typing import Dict, Any, Optional
22
+
23
+ # Set up logging
24
+ log_dir = os.path.join(tempfile.gettempdir(), "ragaai_logs")
25
+ os.makedirs(log_dir, exist_ok=True)
26
+
27
+ # Define maximum file size (e.g., 5 MB) and backup count
28
+ max_file_size = 5 * 1024 * 1024 # 5 MB
29
+ backup_count = 1 # Number of backup files to keep
30
+
31
+ logging.basicConfig(
32
+ level=logging.DEBUG,
33
+ format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
34
+ handlers=[
35
+ logging.StreamHandler(),
36
+ RotatingFileHandler(
37
+ os.path.join(log_dir, "trace_uploader.log"),
38
+ maxBytes=max_file_size,
39
+ backupCount=backup_count
40
+ )
41
+ ]
42
+ )
43
+ logger = logging.getLogger("trace_uploader")
44
+
45
+ try:
46
+ from ragaai_catalyst.tracers.agentic_tracing.upload.upload_agentic_traces import UploadAgenticTraces
47
+ from ragaai_catalyst.tracers.agentic_tracing.upload.upload_code import upload_code
48
+ from ragaai_catalyst.tracers.agentic_tracing.upload.upload_trace_metric import upload_trace_metric
49
+ from ragaai_catalyst.tracers.agentic_tracing.utils.create_dataset_schema import create_dataset_schema_with_trace
50
+ from ragaai_catalyst import RagaAICatalyst
51
+ IMPORTS_AVAILABLE = True
52
+ except ImportError:
53
+ logger.warning("RagaAI Catalyst imports not available - running in test mode")
54
+ IMPORTS_AVAILABLE = False
55
+
56
+ # Define task queue directory
57
+ QUEUE_DIR = os.path.join(tempfile.gettempdir(), "ragaai_tasks")
58
+ os.makedirs(QUEUE_DIR, exist_ok=True)
59
+
60
+ # Status codes
61
+ STATUS_PENDING = "pending"
62
+ STATUS_PROCESSING = "processing"
63
+ STATUS_COMPLETED = "completed"
64
+ STATUS_FAILED = "failed"
65
+
66
+ # Global executor for handling uploads
67
+ _executor = None
68
+ # Dictionary to track futures and their associated task IDs
69
+ _futures: Dict[str, Any] = {}
70
+
71
+ def get_executor():
72
+ """Get or create the thread pool executor"""
73
+ global _executor
74
+ if _executor is None:
75
+ _executor = concurrent.futures.ThreadPoolExecutor(max_workers=8, thread_name_prefix="trace_uploader")
76
+ return _executor
77
+
78
+ def process_upload(task_id: str, filepath: str, hash_id: str, zip_path: str,
79
+ project_name: str, project_id: str, dataset_name: str,
80
+ user_details: Dict[str, Any], base_url: str) -> Dict[str, Any]:
81
+ """
82
+ Process a single upload task
83
+
84
+ Args:
85
+ task_id: Unique identifier for the task
86
+ filepath: Path to the trace file
87
+ hash_id: Hash ID for the code
88
+ zip_path: Path to the code zip file
89
+ project_name: Project name
90
+ project_id: Project ID
91
+ dataset_name: Dataset name
92
+ user_details: User details dictionary
93
+ base_url: Base URL for API calls
94
+
95
+ Returns:
96
+ Dict containing status and any error information
97
+ """
98
+ # Correct base_url
99
+ base_url = base_url[0] if isinstance(base_url, tuple) else base_url
100
+
101
+ logger.info(f"Processing upload task {task_id}")
102
+ result = {
103
+ "task_id": task_id,
104
+ "status": STATUS_PROCESSING,
105
+ "error": None,
106
+ "start_time": datetime.now().isoformat()
107
+ }
108
+
109
+ # Save initial status to file
110
+ save_task_status(result)
111
+
112
+ try:
113
+ # Check if file exists
114
+ if not os.path.exists(filepath):
115
+ error_msg = f"Task filepath does not exist: {filepath}"
116
+ logger.error(error_msg)
117
+ result["status"] = STATUS_FAILED
118
+ result["error"] = error_msg
119
+ save_task_status(result)
120
+ return result
121
+
122
+ if not IMPORTS_AVAILABLE:
123
+ logger.warning(f"Test mode: Simulating processing of task {task_id}")
124
+ # time.sleep(2) # Simulate work
125
+ result["status"] = STATUS_COMPLETED
126
+ save_task_status(result)
127
+ return result
128
+
129
+ # Step 1: Create dataset schema
130
+ logger.info(f"Creating dataset schema for {dataset_name} with base_url: {base_url}")
131
+ try:
132
+ response = create_dataset_schema_with_trace(
133
+ dataset_name=dataset_name,
134
+ project_name=project_name,
135
+ base_url=base_url
136
+ )
137
+ logger.info(f"Dataset schema created: {response}")
138
+ except Exception as e:
139
+ logger.error(f"Error creating dataset schema: {e}")
140
+ # Continue with other steps
141
+
142
+ # Step 2: Upload trace metrics
143
+ if filepath and os.path.exists(filepath):
144
+ logger.info(f"Uploading trace metrics for {filepath}")
145
+ try:
146
+ response = upload_trace_metric(
147
+ json_file_path=filepath,
148
+ dataset_name=dataset_name,
149
+ project_name=project_name,
150
+ base_url=base_url
151
+ )
152
+ logger.info(f"Trace metrics uploaded: {response}")
153
+ except Exception as e:
154
+ logger.error(f"Error uploading trace metrics: {e}")
155
+ # Continue with other uploads
156
+ else:
157
+ logger.warning(f"Trace file {filepath} not found, skipping metrics upload")
158
+
159
+ # Step 3: Upload agentic traces
160
+ if filepath and os.path.exists(filepath):
161
+ logger.info(f"Uploading agentic traces for {filepath}")
162
+ try:
163
+ upload_traces = UploadAgenticTraces(
164
+ json_file_path=filepath,
165
+ project_name=project_name,
166
+ project_id=project_id,
167
+ dataset_name=dataset_name,
168
+ user_detail=user_details,
169
+ base_url=base_url,
170
+ )
171
+ upload_traces.upload_agentic_traces()
172
+ logger.info("Agentic traces uploaded successfully")
173
+ except Exception as e:
174
+ logger.error(f"Error uploading agentic traces: {e}")
175
+ # Continue with code upload
176
+ else:
177
+ logger.warning(f"Trace file {filepath} not found, skipping traces upload")
178
+
179
+ # Step 4: Upload code hash
180
+ if hash_id and zip_path and os.path.exists(zip_path):
181
+ logger.info(f"Uploading code hash {hash_id}")
182
+ try:
183
+ response = upload_code(
184
+ hash_id=hash_id,
185
+ zip_path=zip_path,
186
+ project_name=project_name,
187
+ dataset_name=dataset_name,
188
+ base_url=base_url
189
+ )
190
+ logger.info(f"Code hash uploaded: {response}")
191
+ except Exception as e:
192
+ logger.error(f"Error uploading code hash: {e}")
193
+ else:
194
+ logger.warning(f"Code zip {zip_path} not found, skipping code upload")
195
+
196
+ # Mark task as completed
197
+ result["status"] = STATUS_COMPLETED
198
+ result["end_time"] = datetime.now().isoformat()
199
+ logger.info(f"Task {task_id} completed successfully")
200
+
201
+ except Exception as e:
202
+ logger.error(f"Error processing task {task_id}: {e}")
203
+ result["status"] = STATUS_FAILED
204
+ result["error"] = str(e)
205
+ result["end_time"] = datetime.now().isoformat()
206
+
207
+ # Save final status
208
+ save_task_status(result)
209
+ return result
210
+
211
+ def save_task_status(task_status: Dict[str, Any]):
212
+ """Save task status to a file"""
213
+ task_id = task_status["task_id"]
214
+ status_path = os.path.join(QUEUE_DIR, f"{task_id}_status.json")
215
+ with open(status_path, "w") as f:
216
+ json.dump(task_status, f, indent=2)
217
+
218
+ def submit_upload_task(filepath, hash_id, zip_path, project_name, project_id, dataset_name, user_details, base_url):
219
+ """
220
+ Submit a new upload task using futures.
221
+
222
+ Args:
223
+ filepath: Path to the trace file
224
+ hash_id: Hash ID for the code
225
+ zip_path: Path to the code zip file
226
+ project_name: Project name
227
+ project_id: Project ID
228
+ dataset_name: Dataset name
229
+ user_details: User details dictionary
230
+ base_url: Base URL for API calls
231
+
232
+ Returns:
233
+ str: Task ID
234
+ """
235
+ logger.info(f"Submitting new upload task for file: {filepath}")
236
+ logger.debug(f"Task details - Project: {project_name}, Dataset: {dataset_name}, Hash: {hash_id}, Base_URL: {base_url}")
237
+
238
+ # Verify the trace file exists
239
+ if not os.path.exists(filepath):
240
+ logger.error(f"Trace file not found: {filepath}")
241
+ return None
242
+
243
+ # Create absolute path to the trace file
244
+ filepath = os.path.abspath(filepath)
245
+ logger.debug(f"Using absolute filepath: {filepath}")
246
+
247
+ # Generate a unique task ID
248
+ task_id = f"task_{int(time.time())}_{os.getpid()}_{hash(str(time.time()))}"
249
+
250
+ # Submit the task to the executor
251
+ executor = get_executor()
252
+ future = executor.submit(
253
+ process_upload,
254
+ task_id=task_id,
255
+ filepath=filepath,
256
+ hash_id=hash_id,
257
+ zip_path=zip_path,
258
+ project_name=project_name,
259
+ project_id=project_id,
260
+ dataset_name=dataset_name,
261
+ user_details=user_details,
262
+ base_url=base_url
263
+ )
264
+
265
+ # Store the future for later status checks
266
+ _futures[task_id] = future
267
+
268
+ # Create initial status
269
+ initial_status = {
270
+ "task_id": task_id,
271
+ "status": STATUS_PENDING,
272
+ "error": None,
273
+ "start_time": datetime.now().isoformat()
274
+ }
275
+ save_task_status(initial_status)
276
+
277
+ return task_id
278
+
279
+ def get_task_status(task_id):
280
+ """
281
+ Get the status of a task by ID.
282
+
283
+ Args:
284
+ task_id: Task ID to check
285
+
286
+ Returns:
287
+ dict: Task status information
288
+ """
289
+ logger.debug(f"Getting status for task {task_id}")
290
+
291
+ # Check if we have a future for this task
292
+ future = _futures.get(task_id)
293
+
294
+ # If we have a future, check its status
295
+ if future:
296
+ if future.done():
297
+ try:
298
+ # Get the result (this will re-raise any exception that occurred)
299
+ result = future.result(timeout=0)
300
+ return result
301
+ except concurrent.futures.TimeoutError:
302
+ return {"status": STATUS_PROCESSING, "error": None}
303
+ except Exception as e:
304
+ logger.error(f"Error retrieving future result for task {task_id}: {e}")
305
+ return {"status": STATUS_FAILED, "error": str(e)}
306
+ else:
307
+ return {"status": STATUS_PROCESSING, "error": None}
308
+
309
+ # If we don't have a future, try to read from the status file
310
+ status_path = os.path.join(QUEUE_DIR, f"{task_id}_status.json")
311
+ if os.path.exists(status_path):
312
+ try:
313
+ with open(status_path, "r") as f:
314
+ return json.load(f)
315
+ except Exception as e:
316
+ logger.error(f"Error reading status file for task {task_id}: {e}")
317
+ return {"status": "unknown", "error": f"Error reading status: {e}"}
318
+
319
+ return {"status": "unknown", "error": "Task not found"}
320
+
321
+ def shutdown():
322
+ """Shutdown the executor"""
323
+ global _executor
324
+ if _executor:
325
+ logger.info("Shutting down executor")
326
+ _executor.shutdown(wait=False)
327
+ _executor = None
328
+
329
+ # Register shutdown handler
330
+ atexit.register(shutdown)
331
+
332
+ # For backward compatibility
333
+ def ensure_uploader_running():
334
+ """
335
+ Ensure the uploader is running.
336
+ This is a no-op in the futures implementation, but kept for API compatibility.
337
+ """
338
+ get_executor() # Just ensure the executor is created
339
+ return True
340
+
341
+ # For backward compatibility with the old daemon mode
342
+ def run_daemon():
343
+ """
344
+ Run the uploader as a daemon process.
345
+ This is a no-op in the futures implementation, but kept for API compatibility.
346
+ """
347
+ logger.info("Daemon mode not needed in futures implementation")
348
+ return
349
+
350
+ if __name__ == "__main__":
351
+ parser = argparse.ArgumentParser(description="Trace uploader process")
352
+ parser.add_argument("--daemon", action="store_true", help="Run as daemon process")
353
+ args = parser.parse_args()
354
+
355
+ if args.daemon:
356
+ logger.info("Daemon mode not needed in futures implementation")
357
+ else:
358
+ logger.info("Interactive mode not needed in futures implementation")
@@ -0,0 +1,7 @@
1
+ from .file_span_exporter import FileSpanExporter
2
+ from .raga_exporter import RagaExporter
3
+ from .ragaai_trace_exporter import RAGATraceExporter
4
+ from .dynamic_trace_exporter import DynamicTraceExporter
5
+
6
+
7
+ __all__ = ["FileSpanExporter", "RagaExporter", "RAGATraceExporter", "DynamicTraceExporter"]
@@ -0,0 +1,145 @@
1
+ """
2
+ Dynamic Trace Exporter - A wrapper for RAGATraceExporter that allows dynamic updates to properties.
3
+ """
4
+ import logging
5
+ from opentelemetry.sdk.trace.export import SpanExporter, SpanExportResult
6
+ from ragaai_catalyst.tracers.exporters.ragaai_trace_exporter import RAGATraceExporter
7
+
8
+ logger = logging.getLogger("RagaAICatalyst")
9
+
10
+ class DynamicTraceExporter(SpanExporter):
11
+ """
12
+ A wrapper around RAGATraceExporter that allows dynamic updates to properties.
13
+ This exporter forwards all calls to the underlying RAGATraceExporter but allows
14
+ certain properties to be updated dynamically during execution.
15
+ """
16
+
17
+ def __init__(self, files_to_zip, project_name, project_id, dataset_name, user_details, base_url, custom_model_cost):
18
+ """
19
+ Initialize the DynamicTraceExporter.
20
+
21
+ Args:
22
+ files_to_zip: List of files to zip
23
+ project_name: Project name
24
+ project_id: Project ID
25
+ dataset_name: Dataset name
26
+ user_details: User details
27
+ base_url: Base URL for API
28
+ """
29
+ self._exporter = RAGATraceExporter(
30
+ files_to_zip=files_to_zip,
31
+ project_name=project_name,
32
+ project_id=project_id,
33
+ dataset_name=dataset_name,
34
+ user_details=user_details,
35
+ base_url=base_url,
36
+ custom_model_cost=custom_model_cost
37
+ )
38
+
39
+ # Store the initial values
40
+ self._files_to_zip = files_to_zip
41
+ self._project_name = project_name
42
+ self._project_id = project_id
43
+ self._dataset_name = dataset_name
44
+ self._user_details = user_details
45
+ self._base_url = base_url,
46
+ self._custom_model_cost = custom_model_cost
47
+
48
+
49
+ def export(self, spans):
50
+ """
51
+ Export spans by forwarding to the underlying exporter.
52
+ Before exporting, update the exporter's properties with the current values.
53
+
54
+ Args:
55
+ spans: Spans to export
56
+
57
+ Returns:
58
+ SpanExportResult: Result of the export operation
59
+ """
60
+ # Update the exporter's properties
61
+ self._update_exporter_properties()
62
+
63
+ # Forward the call to the underlying exporter
64
+ return self._exporter.export(spans)
65
+
66
+ def shutdown(self):
67
+ """
68
+ Shutdown the exporter by forwarding to the underlying exporter.
69
+ Before shutting down, update the exporter's properties with the current values.
70
+ """
71
+ # Update the exporter's properties
72
+ self._update_exporter_properties()
73
+
74
+ # Forward the call to the underlying exporter
75
+ return self._exporter.shutdown()
76
+
77
+ def _update_exporter_properties(self):
78
+ """
79
+ Update the underlying exporter's properties with the current values.
80
+ """
81
+ self._exporter.files_to_zip = self._files_to_zip
82
+ self._exporter.project_name = self._project_name
83
+ self._exporter.project_id = self._project_id
84
+ self._exporter.dataset_name = self._dataset_name
85
+ self._exporter.user_details = self._user_details
86
+ self._exporter.base_url = self._base_url
87
+ self._exporter.custom_model_cost = self._custom_model_cost
88
+
89
+ # Getter and setter methods for dynamic properties
90
+
91
+ @property
92
+ def files_to_zip(self):
93
+ return self._files_to_zip
94
+
95
+ @files_to_zip.setter
96
+ def files_to_zip(self, value):
97
+ self._files_to_zip = value
98
+
99
+ @property
100
+ def project_name(self):
101
+ return self._project_name
102
+
103
+ @project_name.setter
104
+ def project_name(self, value):
105
+ self._project_name = value
106
+
107
+ @property
108
+ def project_id(self):
109
+ return self._project_id
110
+
111
+ @project_id.setter
112
+ def project_id(self, value):
113
+ self._project_id = value
114
+
115
+ @property
116
+ def dataset_name(self):
117
+ return self._dataset_name
118
+
119
+ @dataset_name.setter
120
+ def dataset_name(self, value):
121
+ self._dataset_name = value
122
+
123
+ @property
124
+ def user_details(self):
125
+ return self._user_details
126
+
127
+ @user_details.setter
128
+ def user_details(self, value):
129
+ self._user_details = value
130
+
131
+ @property
132
+ def base_url(self):
133
+ return self._base_url
134
+
135
+ @base_url.setter
136
+ def base_url(self, value):
137
+ self._base_url = value
138
+
139
+ @property
140
+ def custom_model_cost(self):
141
+ return self._custom_model_cost
142
+
143
+ @custom_model_cost.setter
144
+ def custom_model_cost(self, value):
145
+ self._custom_model_cost = value