langwatch 0.7.2__tar.gz → 0.8.1__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.
- langwatch-0.8.1/AGENTS.md +46 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/CHANGELOG.md +24 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/Makefile +13 -3
- {langwatch-0.7.2 → langwatch-0.8.1}/PKG-INFO +1 -1
- langwatch-0.8.1/examples/README.md +167 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/cli/guaranteed_availability_with_cli.py +1 -21
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/distributed_tracing.py +4 -3
- langwatch-0.8.1/examples/test_utils/run_cli.py +23 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/pyproject.toml +11 -2
- langwatch-0.8.1/specs/prompts/fetch-policy.feature +7 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/__init__.py +3 -1
- langwatch-0.8.1/src/langwatch/__version__.py +3 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/batch_evaluation.py +5 -4
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/dspy/__init__.py +3 -2
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/evaluation/evaluation.py +3 -2
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/evaluations.py +3 -2
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/login.py +2 -1
- langwatch-0.8.1/src/langwatch/prompts/__init__.py +36 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/prompts/errors.py +2 -1
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/prompts/local_loader.py +7 -2
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/prompts/prompt_facade.py +95 -5
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/prompts/types/__init__.py +4 -0
- langwatch-0.8.1/src/langwatch/prompts/types/fetch_policy.py +26 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/telemetry/tracing.py +3 -2
- langwatch-0.8.1/src/langwatch/utils/exceptions.py +35 -0
- langwatch-0.8.1/tests/e2e/test_fetch_policies_e2e.py +356 -0
- langwatch-0.8.1/tests/prompts/test_fetch_policies.py +560 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/test_examples.py +16 -9
- {langwatch-0.7.2 → langwatch-0.8.1}/uv.lock +8 -6
- langwatch-0.7.2/src/langwatch/__version__.py +0 -3
- langwatch-0.7.2/src/langwatch/prompts/__init__.py +0 -5
- langwatch-0.7.2/src/langwatch/prompts/types.py +0 -16
- langwatch-0.7.2/src/langwatch/utils/exceptions.py +0 -14
- {langwatch-0.7.2 → langwatch-0.8.1}/.editorconfig +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/.env.example +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/.gitignore +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/README.md +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/__init__.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/azure_openai_stream_bot.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/cli/README.md +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/custom_evaluation_bot.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/data/rag_dspy_bot.json +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/dataset_kitchen_sink.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/documentation/openai_langwatch.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/documentation/openai_openinference.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/dspy_bot.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/dspy_visualization.ipynb +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/evaluation_manual_call.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/fastapi_app.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/generic_bot.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/generic_bot_async_streaming.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/generic_bot_exception.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/generic_bot_rag.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/generic_bot_rag_expected_output.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/generic_bot_rag_multithreaded.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/generic_bot_span_context_manager.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/generic_bot_span_low_level.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/generic_bot_streaming.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/generic_bot_sync_function.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/generic_bot_update_metadata_later.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/guardrails.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/guardrails_parallel.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/guardrails_without_tracing.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/haystack_bot.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/langchain_bot.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/langchain_bot_with_memory.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/langchain_rag_bot.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/langchain_rag_bot_vertex_ai.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/langchain_rag_bot_with_threads.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/langgraph_rag_bot_with_threads.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/langwatch_docs_rag_evaluation.ipynb +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/litellm_bot.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/offline_evaluation.ipynb +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/openai_bot.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/openai_bot_disable_trace.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/openai_bot_function_call.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/openai_bot_max_string_length.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/openai_bot_max_string_length_none.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/openai_bot_otel_metrics.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/openai_bot_rag.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/openai_bot_sampling_rate.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/openinference/google_adk.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/opentelemetry/openinference_dspy_bot.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/opentelemetry/openinference_haystack.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/opentelemetry/openinference_langchain_bot.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/opentelemetry/openinference_openai_assistants_api_bot.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/opentelemetry/openinference_openai_bot.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/opentelemetry/openllmetry_anthropic_bot.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/opentelemetry/openllmetry_crewai_bot.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/opentelemetry/openllmetry_langchain_bot.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/opentelemetry/openllmetry_openai_bot.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/opentelemetry/traditional_instrumentation_fastapi_app.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/pdf_parsing_evaluation.ipynb +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/prompt_cli/.gitignore +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/prompt_cli/main.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/prompt_cli/prompts/agent/performance.prompt.yaml +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/prompt_management_fastapi.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/sanity/setup_example.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/span_evaluation.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/strands_bot.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/streamlit_openai_assistants_api_bot.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/weaviate_dspy_visualization.ipynb +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/weaviate_setup/.gitignore +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/weaviate_setup/Weaviate-Import.ipynb +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/weaviate_setup/docker-compose.yml +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/weaviate_setup/optimization_screenshot.png +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/examples/weaviate_setup/tracing_screenshot.png +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/attributes.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/client.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/dataset/__init__.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/domain/__init__.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/evaluation/__init__.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/exporters/filterable_batch_span_exporter.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/__init__.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/__init__.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/__init__.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/delete_api_annotations_id.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/delete_api_prompts_by_id.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/delete_api_scenario_events.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/get_api_annotations.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/get_api_annotations_id.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/get_api_annotations_trace_id.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/get_api_dataset_by_slug_or_id.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/get_api_prompts.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/get_api_prompts_by_id.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/get_api_prompts_by_id_versions.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/get_api_trace_id.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/get_index.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/patch_api_annotations_id.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/post_api_annotations_trace_id.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/post_api_dataset_by_slug_entries.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/post_api_prompts.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/post_api_prompts_by_id_sync.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/post_api_scenario_events.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/post_api_trace_id_share.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/post_api_trace_id_unshare.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/post_index.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/default/put_api_prompts_by_id.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/traces/__init__.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/api/traces/post_api_trace_search.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/client.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/errors.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/__init__.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/annotation.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/dataset_post_entries.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/dataset_post_entries_entries_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_annotations_id_response_200.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_prompts_by_id_response_200.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_prompts_by_id_response_400.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_prompts_by_id_response_401.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_prompts_by_id_response_404.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_prompts_by_id_response_422.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_prompts_by_id_response_500.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_scenario_events_response_200.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_scenario_events_response_400.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_scenario_events_response_401.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_scenario_events_response_422.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_scenario_events_response_500.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/error.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/evaluation.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/evaluation_timestamps.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_dataset_by_slug_or_id_response_200.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_dataset_by_slug_or_id_response_200_data_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_dataset_by_slug_or_id_response_200_data_item_entry.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_dataset_by_slug_or_id_response_400.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_dataset_by_slug_or_id_response_401.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_dataset_by_slug_or_id_response_404.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_dataset_by_slug_or_id_response_422.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_dataset_by_slug_or_id_response_500.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_demonstrations.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_demonstrations_inline.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_demonstrations_inline_column_types_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_demonstrations_inline_records.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_inputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_inputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_messages_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_messages_item_role.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_outputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_outputs_item_json_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_outputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_prompting_technique.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_prompting_technique_demonstrations.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_prompting_technique_demonstrations_inline.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_prompting_technique_demonstrations_inline_column_types_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_prompting_technique_demonstrations_inline_records.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_prompting_technique_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_response_format.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_response_format_json_schema_type_0.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_response_format_json_schema_type_0_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_response_format_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_scope.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_400.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_401.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_404.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_422.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_500.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_demonstrations.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_demonstrations_inline.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_demonstrations_inline_column_types_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_demonstrations_inline_records.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_inputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_inputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_messages_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_messages_item_role.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_outputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_outputs_item_json_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_outputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_prompting_technique.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_prompting_technique_demonstrations.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_prompting_technique_demonstrations_inline.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_prompting_technique_demonstrations_inline_column_types_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_prompting_technique_demonstrations_inline_records.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_prompting_technique_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_response_format.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_response_format_json_schema_type_0.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_response_format_json_schema_type_0_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_response_format_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_scope.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_400.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_401.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_404.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_422.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_500.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_demonstrations.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_demonstrations_inline.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_demonstrations_inline_column_types_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_demonstrations_inline_records.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_inputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_inputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_messages_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_messages_item_role.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_outputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_outputs_item_json_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_outputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_prompting_technique.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_prompting_technique_demonstrations.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_prompting_technique_demonstrations_inline.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_prompting_technique_demonstrations_inline_column_types_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_prompting_technique_demonstrations_inline_records.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_prompting_technique_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_response_format.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_response_format_json_schema_type_0.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_response_format_json_schema_type_0_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_response_format_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_scope.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_400.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_401.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_422.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_500.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_error_type_0.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_evaluations_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_evaluations_item_error.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_evaluations_item_timestamps.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_input.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_metadata.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_metrics.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_output.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_spans_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_spans_item_error_type_0.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_spans_item_input.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_spans_item_input_value_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_spans_item_metrics.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_spans_item_output.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_spans_item_output_value_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_spans_item_params.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_spans_item_timestamps.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_timestamps.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_200_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_200_item_messages_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_200_item_messages_item_role.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_200_item_response_format_type_0.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_200_item_response_format_type_0_json_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_200_item_response_format_type_0_json_schema_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_200_item_response_format_type_0_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_200_item_scope.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_400.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_401.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_500.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/input_.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/metadata.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/metrics.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/output.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/pagination.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/patch_api_annotations_id_body.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/patch_api_annotations_id_response_200.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_annotations_trace_id_body.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_inputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_inputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_messages_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_messages_item_role.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_outputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_outputs_item_json_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_outputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_schema_version.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_scope.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_demonstrations.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_demonstrations_inline.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_demonstrations_inline_column_types_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_demonstrations_inline_records.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_inputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_inputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_messages_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_messages_item_role.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_outputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_outputs_item_json_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_outputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_prompting_technique.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_prompting_technique_demonstrations.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_prompting_technique_demonstrations_inline.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_prompting_technique_demonstrations_inline_column_types_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_prompting_technique_demonstrations_inline_records.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_prompting_technique_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_response_format.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_response_format_json_schema_type_0.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_response_format_json_schema_type_0_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_response_format_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_action.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_demonstrations.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_demonstrations_inline.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_demonstrations_inline_column_types_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_demonstrations_inline_records.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_inputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_inputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_messages_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_messages_item_role.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_outputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_outputs_item_json_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_outputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_prompting_technique.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_prompting_technique_demonstrations.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_prompting_technique_demonstrations_inline.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_prompting_technique_demonstrations_inline_column_types_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_prompting_technique_demonstrations_inline_records.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_prompting_technique_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_response_format.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_response_format_json_schema_type_0.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_response_format_json_schema_type_0_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_response_format_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_demonstrations.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_demonstrations_inline.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_demonstrations_inline_column_types_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_demonstrations_inline_records.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_inputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_inputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_messages_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_messages_item_role.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_outputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_outputs_item_json_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_outputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_prompting_technique.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_prompting_technique_demonstrations.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_prompting_technique_demonstrations_inline.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_prompting_technique_demonstrations_inline_column_types_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_prompting_technique_demonstrations_inline_records.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_prompting_technique_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_response_format.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_response_format_json_schema_type_0.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_response_format_json_schema_type_0_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_response_format_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_scope.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_400.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_401.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_422.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_500.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_demonstrations.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_demonstrations_inline.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_demonstrations_inline_column_types_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_demonstrations_inline_records.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_inputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_inputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_messages_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_messages_item_role.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_outputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_outputs_item_json_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_outputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_prompting_technique.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_prompting_technique_demonstrations.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_prompting_technique_demonstrations_inline.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_prompting_technique_demonstrations_inline_column_types_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_prompting_technique_demonstrations_inline_records.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_prompting_technique_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_response_format.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_response_format_json_schema_type_0.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_response_format_json_schema_type_0_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_response_format_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_scope.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_400.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_401.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_409.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_422.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_500.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_0.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_0_metadata.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_1.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_1_results_type_0.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_1_results_type_0_verdict.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_1_status.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_2.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_2_messages_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_response_201.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_response_400.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_response_401.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_response_422.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_response_500.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_trace_id_share_response_200.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_trace_id_unshare_response_200.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_body.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_body_inputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_body_inputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_body_messages_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_body_messages_item_role.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_body_outputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_body_outputs_item_json_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_body_outputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_body_scope.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_200.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_200_messages_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_200_messages_item_role.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_200_response_format_type_0.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_200_response_format_type_0_json_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_200_response_format_type_0_json_schema_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_200_response_format_type_0_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_200_scope.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_400.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_401.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_500.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_inputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_inputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_messages_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_messages_item_role.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_outputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_outputs_item_json_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_outputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_schema_version.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_scope.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_demonstrations.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_demonstrations_inline.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_demonstrations_inline_column_types_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_demonstrations_inline_records.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_inputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_inputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_messages_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_messages_item_role.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_outputs_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_outputs_item_json_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_outputs_item_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_prompting_technique.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_prompting_technique_demonstrations.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_prompting_technique_demonstrations_inline.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_prompting_technique_demonstrations_inline_column_types_item.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_prompting_technique_demonstrations_inline_records.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_prompting_technique_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_response_format.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_response_format_json_schema_type_0.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_response_format_json_schema_type_0_schema.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_response_format_type.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_scope.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_400.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_401.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_404.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_409.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_422.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_500.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/search_request.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/search_request_filters.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/search_response.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/timestamps.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/models/trace.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/py.typed +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/generated/langwatch_rest_api_client/types.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/guardrails.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/langchain.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/litellm.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/openai.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/prompts/decorators/prompt_service_tracing.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/prompts/decorators/prompt_tracing.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/prompts/prompt.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/prompts/prompt_api_service.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/prompts/types/prompt_data.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/prompts/types/structures.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/py.typed +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/state.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/telemetry/__tests__/test_tracing.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/telemetry/context.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/telemetry/sampling.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/telemetry/span.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/telemetry/types.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/tracer.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/types.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/utils/__init__.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/utils/capture.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/utils/initialization.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/utils/module.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/utils/transformation.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/src/langwatch/utils/utils.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/conftest.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/exporters/test_filterable_batch_span_exporter.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/fixtures/README.md +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/fixtures/__init__.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/fixtures/get_response_factories.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/fixtures/prompts/cli.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/fixtures/prompts/general.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/fixtures/prompts/prompt_fixtures.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/fixtures/span_exporter.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/prompts/test_guaranteed_availability.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/prompts/test_local_loader.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/prompts/test_prompt.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/prompts/test_prompt_service_tracing.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/prompts/test_prompt_tracing.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/telemetry/test_context.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/telemetry/test_tracing.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/test_cli_runner.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/test_client.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/test_login.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/test_version.py +0 -0
- {langwatch-0.7.2 → langwatch-0.8.1}/tests/utils/test_transformation.py +0 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
## Python SDK Testing Antipatterns
|
|
2
|
+
|
|
3
|
+
| Antipattern | Correct Behavior |
|
|
4
|
+
|-------------|------------------|
|
|
5
|
+
| Writing E2E tests mixed with unit tests | Keep E2E tests isolated in `tests/e2e/` directory with `@pytest.mark.e2e`. E2E tests verify real API behavior with external services, while examples serve as user demonstrations. |
|
|
6
|
+
| Repeating happy paths in integration/unit tests | Do not duplicate E2E/example coverage in integrations or units. Focus integration tests on edge/error cases, and unit tests on pure logic. |
|
|
7
|
+
| Failing to follow [TESTING.md](../TESTING.md) hierarchy | Always start with a `.feature` file, drive from E2E tests in `tests/e2e/`, then add integration tests in `tests/` and unit tests as outlined. Examples in `examples/` serve as user demonstrations. |
|
|
8
|
+
| Using `pip` or `python` directly for installing, running, or testing | Always use [`uv`](https://github.com/astral-sh/uv) for all dependency installation, package management, and test running. Do not use `pip` commands or `python -m pip`, prefer `uv` equivalents throughout documentation, scripts, and workflows. |
|
|
9
|
+
|
|
10
|
+
## Testing Structure
|
|
11
|
+
|
|
12
|
+
The Python SDK follows a hierarchical testing approach:
|
|
13
|
+
|
|
14
|
+
### `tests/e2e/` - End-to-End Tests
|
|
15
|
+
- **Purpose**: Verify real API behavior with external services
|
|
16
|
+
- **Location**: `tests/e2e/` directory
|
|
17
|
+
- **Markers**: `@pytest.mark.e2e`
|
|
18
|
+
- **Run with**: `pytest tests/e2e/` or `pytest -m e2e`
|
|
19
|
+
- **Examples**: `test_fetch_policies_e2e.py` - verifies fetch policies work with real API calls
|
|
20
|
+
|
|
21
|
+
### `examples/` - User Demonstrations
|
|
22
|
+
- **Purpose**: Show users how to use the SDK features
|
|
23
|
+
- **Location**: `examples/` directory
|
|
24
|
+
- **Markers**: None (automatically tested by `test_examples.py`)
|
|
25
|
+
- **Run with**: `pytest tests/test_examples.py` or manually as scripts
|
|
26
|
+
- **Examples**: `generic_bot.py`, `langchain_bot.py`, etc.
|
|
27
|
+
|
|
28
|
+
### `tests/` - Integration & Unit Tests
|
|
29
|
+
- **Purpose**: Test components and error cases
|
|
30
|
+
- **Location**: `tests/` directory
|
|
31
|
+
- **Markers**: `@pytest.mark.integration`, `@pytest.mark.unit` (default)
|
|
32
|
+
- **Run with**: `pytest tests/` or `pytest -m "not e2e"`
|
|
33
|
+
|
|
34
|
+
### Running Tests Selectively
|
|
35
|
+
```bash
|
|
36
|
+
# Run all tests except E2E (fast CI)
|
|
37
|
+
pytest tests/ -m "not e2e"
|
|
38
|
+
|
|
39
|
+
# Run only E2E tests (requires API keys)
|
|
40
|
+
pytest tests/e2e/
|
|
41
|
+
|
|
42
|
+
# Run examples as demonstrations
|
|
43
|
+
pytest tests/test_examples.py
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
|
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.8.1](https://github.com/langwatch/langwatch/compare/python-sdk@v0.8.0...python-sdk@v0.8.1) (2026-01-06)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* improve backend error capturing of whole python-sdk to forward the human readable error message, and improve auto parsing of contexts for evaluation ([7ed0623](https://github.com/langwatch/langwatch/commit/7ed06235ecf14091c4cad33a5331a4d0819e9a27))
|
|
9
|
+
* reraise when 'error' is not available ([40530a2](https://github.com/langwatch/langwatch/commit/40530a2de08ce796dcc4ad9a0a97cd661044dbf1))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Miscellaneous
|
|
13
|
+
|
|
14
|
+
* trigger release ([#1011](https://github.com/langwatch/langwatch/issues/1011)) ([6173f53](https://github.com/langwatch/langwatch/commit/6173f53b041d9ee7e6b930270224954ba3c6621e))
|
|
15
|
+
|
|
16
|
+
## [0.8.0](https://github.com/langwatch/langwatch/compare/python-sdk@v0.7.2...python-sdk@v0.8.0) (2025-12-16)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Features
|
|
20
|
+
|
|
21
|
+
* implement FetchPolicy enum for Python SDK ([#989](https://github.com/langwatch/langwatch/issues/989)) ([43de904](https://github.com/langwatch/langwatch/commit/43de904de08ec54a78aece35da155a8a3cb4289d))
|
|
22
|
+
|
|
23
|
+
### Bug Fixes
|
|
24
|
+
|
|
25
|
+
* rerun evaluations if new spans arrive even after 30s but less than 1h ([79ba316](https://github.com/langwatch/langwatch/commit/79ba3163c64f224e3d2b640b5340f1503fc57c48))
|
|
26
|
+
|
|
3
27
|
## [0.7.2](https://github.com/langwatch/langwatch/compare/python-sdk@v0.7.1...python-sdk@v0.7.2) (2025-12-03)
|
|
4
28
|
|
|
5
29
|
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
.PHONY: test test-tracing install example
|
|
2
2
|
|
|
3
|
-
test:
|
|
4
|
-
LANGWATCH_API_KEY="testkey" PYTHONPATH=$$PYTHONPATH:. uv run pytest -s -vv -m "not integration" -k "not test_example and not test_prompt_service_tracing and not test_prompt_tracing and not test_context and not test_tracing" $(filter-out $@,$(MAKECMDGOALS))
|
|
3
|
+
test-unit:
|
|
4
|
+
LANGWATCH_API_KEY="testkey" PYTHONPATH=$$PYTHONPATH:. uv run pytest -s -vv -m "not integration and not e2e" -k "not test_example and not test_prompt_service_tracing and not test_prompt_tracing and not test_context and not test_tracing" $(filter-out $@,$(MAKECMDGOALS))
|
|
5
|
+
|
|
6
|
+
test-e2e:
|
|
7
|
+
PYTHONPATH=$$PYTHONPATH:. uv run pytest -s -vv -m "e2e"
|
|
5
8
|
|
|
6
9
|
# Run tracing tests in isolation to avoid global OpenTelemetry state conflicts
|
|
7
10
|
test-tracing:
|
|
@@ -14,6 +17,11 @@ test-tracing:
|
|
|
14
17
|
@echo "Running telemetry tracing tests..."
|
|
15
18
|
@LANGWATCH_API_KEY="testkey" PYTHONPATH=$$PYTHONPATH:. uv run pytest -s -vv tests/telemetry/test_tracing.py
|
|
16
19
|
|
|
20
|
+
test: install
|
|
21
|
+
$(MAKE) test-unit
|
|
22
|
+
$(MAKE) test-tracing
|
|
23
|
+
$(MAKE) test-e2e
|
|
24
|
+
|
|
17
25
|
# Test bot/chatbot examples (excludes CLI examples)
|
|
18
26
|
# Call it with `make test-examples -- -k examples/openai_bot.py` to run a specific example
|
|
19
27
|
test-examples:
|
|
@@ -46,6 +54,8 @@ example:
|
|
|
46
54
|
uv run python $$args; \
|
|
47
55
|
elif [[ $$args =~ "streamlit" ]]; then \
|
|
48
56
|
uv run streamlit run $$args; \
|
|
57
|
+
elif [[ $$args =~ "fetch_policies" ]]; then \
|
|
58
|
+
PYTHONPATH=$$PYTHONPATH:. uv run python $$args; \
|
|
49
59
|
else \
|
|
50
60
|
uv run chainlit run -w --port 9000 $$args; \
|
|
51
61
|
fi
|
|
@@ -60,7 +70,7 @@ ensure-openapi-python-client:
|
|
|
60
70
|
|
|
61
71
|
generate/api-client: ensure-openapi-python-client
|
|
62
72
|
@echo "Generating OpenAPI spec..."
|
|
63
|
-
@cd ../langwatch &&
|
|
73
|
+
@cd ../langwatch && pnpm run task generateOpenAPISpec
|
|
64
74
|
@echo "Deleting old API client..."
|
|
65
75
|
@rm -rf src/langwatch/generated/langwatch_rest_api_client
|
|
66
76
|
@echo "Building API client..."
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# LangWatch Python SDK Examples
|
|
2
|
+
|
|
3
|
+
This directory contains examples demonstrating various LangWatch SDK features. Each example is a runnable Python script that shows real-world usage patterns.
|
|
4
|
+
|
|
5
|
+
## 📋 Categories
|
|
6
|
+
|
|
7
|
+
### 🤖 Core Bot Examples
|
|
8
|
+
|
|
9
|
+
Basic chatbot implementations showing fundamental LangWatch tracing:
|
|
10
|
+
|
|
11
|
+
| Example | Description | Key Features |
|
|
12
|
+
|---------|-------------|--------------|
|
|
13
|
+
| [`generic_bot.py`](generic_bot.py) | Simple synchronous chatbot | Basic tracing, metadata |
|
|
14
|
+
| [`generic_bot_sync_function.py`](generic_bot_sync_function.py) | Sync function usage | Function-level tracing |
|
|
15
|
+
| [`generic_bot_async_streaming.py`](generic_bot_async_streaming.py) | Async streaming responses | Streaming support, async/await |
|
|
16
|
+
| [`generic_bot_streaming.py`](generic_bot_streaming.py) | Synchronous streaming | Streaming without async |
|
|
17
|
+
| [`generic_bot_span_context_manager.py`](generic_bot_span_context_manager.py) | Manual span management | Context managers, custom spans |
|
|
18
|
+
| [`generic_bot_span_low_level.py`](generic_bot_span_low_level.py) | Low-level span control | Direct span manipulation |
|
|
19
|
+
|
|
20
|
+
### 🔗 Framework Integrations
|
|
21
|
+
|
|
22
|
+
Examples showing integration with popular AI frameworks:
|
|
23
|
+
|
|
24
|
+
| Example | Framework | Features |
|
|
25
|
+
|---------|-----------|----------|
|
|
26
|
+
| [`langchain_bot.py`](langchain_bot.py) | LangChain | LCEL, chains, agents |
|
|
27
|
+
| [`langchain_bot_with_memory.py`](langchain_bot_with_memory.py) | LangChain + Memory | Conversation history |
|
|
28
|
+
| [`langchain_rag_bot.py`](langchain_rag_bot.py) | LangChain RAG | Retrieval-augmented generation |
|
|
29
|
+
| [`langchain_rag_bot_with_threads.py`](langchain_rag_bot_with_threads.py) | LangChain RAG + Threads | Multi-threading |
|
|
30
|
+
| [`langchain_rag_bot_vertex_ai.py`](langchain_rag_bot_vertex_ai.py) | LangChain + Vertex AI | Google Cloud integration |
|
|
31
|
+
| [`langgraph_rag_bot_with_threads.py`](langgraph_rag_bot_with_threads.py) | LangGraph | Graph-based workflows |
|
|
32
|
+
| [`haystack_bot.py`](haystack_bot.py) | Haystack | Document search, pipelines |
|
|
33
|
+
| [`dspy_bot.py`](dspy_bot.py) | DSPy | Programmatic prompting |
|
|
34
|
+
| [`litellm_bot.py`](litellm_bot.py) | LiteLLM | Multi-provider support |
|
|
35
|
+
|
|
36
|
+
### 🌐 Web Framework Examples
|
|
37
|
+
|
|
38
|
+
Examples showing web application integration:
|
|
39
|
+
|
|
40
|
+
| Example | Framework | Features |
|
|
41
|
+
|---------|-----------|----------|
|
|
42
|
+
| [`fastapi_app.py`](fastapi_app.py) | FastAPI | Web API with tracing |
|
|
43
|
+
| [`prompt_management_fastapi.py`](prompt_management_fastapi.py) | FastAPI | Prompt management API |
|
|
44
|
+
| [`streamlit_openai_assistants_api_bot.py`](streamlit_openai_assistants_api_bot.py) | Streamlit | UI with assistants API |
|
|
45
|
+
|
|
46
|
+
### 📊 Evaluation & Analysis
|
|
47
|
+
|
|
48
|
+
Examples focused on evaluation and analytics:
|
|
49
|
+
|
|
50
|
+
| Example | Purpose | Features |
|
|
51
|
+
|---------|---------|----------|
|
|
52
|
+
| [`evaluation_manual_call.py`](evaluation_manual_call.py) | Manual evaluation | Custom evaluation logic |
|
|
53
|
+
| [`span_evaluation.py`](span_evaluation.py) | Span-based evaluation | Automatic span analysis |
|
|
54
|
+
| [`custom_evaluation_bot.py`](custom_evaluation_bot.py) | Custom evaluators | User-defined metrics |
|
|
55
|
+
|
|
56
|
+
### 🛡️ Safety & Reliability
|
|
57
|
+
|
|
58
|
+
Examples demonstrating guardrails and error handling:
|
|
59
|
+
|
|
60
|
+
| Example | Focus | Features |
|
|
61
|
+
|---------|-------|----------|
|
|
62
|
+
| [`guardrails.py`](guardrails.py) | Content safety | Input/output filtering |
|
|
63
|
+
| [`guardrails_parallel.py`](guardrails_parallel.py) | Parallel guardrails | Concurrent safety checks |
|
|
64
|
+
| [`guardrails_without_tracing.py`](guardrails_without_tracing.py) | Standalone guardrails | Safety without tracing |
|
|
65
|
+
| [`generic_bot_exception.py`](generic_bot_exception.py) | Error handling | Exception tracing |
|
|
66
|
+
|
|
67
|
+
### 🔍 RAG & Retrieval Examples
|
|
68
|
+
|
|
69
|
+
Advanced retrieval-augmented generation patterns:
|
|
70
|
+
|
|
71
|
+
| Example | Approach | Features |
|
|
72
|
+
|---------|----------|----------|
|
|
73
|
+
| [`generic_bot_rag.py`](generic_bot_rag.py) | Basic RAG | Document retrieval |
|
|
74
|
+
| [`generic_bot_rag_multithreaded.py`](generic_bot_rag_multithreaded.py) | Multi-threaded RAG | Concurrent processing |
|
|
75
|
+
| [`openai_bot_rag.py`](openai_bot_rag.py) | OpenAI + RAG | Embeddings, vector search |
|
|
76
|
+
|
|
77
|
+
### 📈 Advanced Features
|
|
78
|
+
|
|
79
|
+
Specialized functionality examples:
|
|
80
|
+
|
|
81
|
+
| Example | Feature | Description |
|
|
82
|
+
|---------|---------|-------------|
|
|
83
|
+
| [`fetch_policies_example.py`](fetch_policies_example.py) | Fetch policies | Prompt retrieval strategies |
|
|
84
|
+
| [`distributed_tracing.py`](distributed_tracing.py) | Distributed tracing | Multi-service tracing |
|
|
85
|
+
| [`dataset_kitchen_sink.py`](dataset_kitchen_sink.py) | Dataset operations | Full dataset workflow |
|
|
86
|
+
| [`offline_evaluation.ipynb`](offline_evaluation.ipynb) | Offline analysis | Jupyter notebook evaluation |
|
|
87
|
+
|
|
88
|
+
### 🔧 Specialized Integrations
|
|
89
|
+
|
|
90
|
+
Examples for specific use cases and integrations:
|
|
91
|
+
|
|
92
|
+
| Example | Integration | Purpose |
|
|
93
|
+
|---------|-------------|---------|
|
|
94
|
+
| [`azure_openai_stream_bot.py`](azure_openai_stream_bot.py) | Azure OpenAI | Cloud provider integration |
|
|
95
|
+
| [`strands_bot.py`](strands_bot.py) | Strands | Multi-agent systems |
|
|
96
|
+
|
|
97
|
+
## 🚀 Running Examples
|
|
98
|
+
|
|
99
|
+
### Prerequisites
|
|
100
|
+
```bash
|
|
101
|
+
# Install dependencies
|
|
102
|
+
uv sync
|
|
103
|
+
|
|
104
|
+
# Set API keys (varies by example)
|
|
105
|
+
export OPENAI_API_KEY="your-key"
|
|
106
|
+
export LANGWATCH_API_KEY="your-langwatch-key"
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Run Individual Examples
|
|
110
|
+
```bash
|
|
111
|
+
# Basic bot
|
|
112
|
+
python examples/generic_bot.py
|
|
113
|
+
|
|
114
|
+
# LangChain integration
|
|
115
|
+
python examples/langchain_bot.py
|
|
116
|
+
|
|
117
|
+
# FastAPI web app
|
|
118
|
+
uvicorn examples.fastapi_app:app --reload
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Run All Examples (Testing)
|
|
122
|
+
```bash
|
|
123
|
+
# Run all examples as tests
|
|
124
|
+
pytest tests/test_examples.py
|
|
125
|
+
|
|
126
|
+
# Run specific example
|
|
127
|
+
pytest tests/test_examples.py -k "generic_bot"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## 📁 Directory Structure
|
|
131
|
+
|
|
132
|
+
```text
|
|
133
|
+
examples/
|
|
134
|
+
├── README.md # This file
|
|
135
|
+
├── *.py # Individual examples
|
|
136
|
+
├── cli/ # CLI-specific examples
|
|
137
|
+
│ └── README.md
|
|
138
|
+
├── data/ # Example data files
|
|
139
|
+
├── documentation/ # Documentation examples
|
|
140
|
+
├── openinference/ # OpenInference integration
|
|
141
|
+
├── opentelemetry/ # OpenTelemetry integration
|
|
142
|
+
├── prompt_cli/ # Prompt CLI examples
|
|
143
|
+
├── sanity/ # Setup/sanity check examples
|
|
144
|
+
├── test_utils/ # Utilities for testing examples
|
|
145
|
+
└── weaviate_setup/ # Weaviate-specific setup
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## 🎯 Example Categories
|
|
149
|
+
|
|
150
|
+
- **Beginner**: `generic_bot.py`, `generic_bot_sync_function.py`
|
|
151
|
+
- **Intermediate**: Framework integrations, basic RAG
|
|
152
|
+
- **Advanced**: Multi-threading, distributed tracing, custom evaluations, fetch policies
|
|
153
|
+
- **Integration**: Web frameworks, cloud providers, specialized tools
|
|
154
|
+
|
|
155
|
+
## 📝 Contributing
|
|
156
|
+
|
|
157
|
+
When adding new examples:
|
|
158
|
+
1. Follow naming convention: `{feature/framework}_bot.py`
|
|
159
|
+
2. Include docstring explaining what it demonstrates
|
|
160
|
+
3. Add to appropriate category in this README
|
|
161
|
+
4. Ensure it runs with `pytest tests/test_examples.py`
|
|
162
|
+
|
|
163
|
+
## 🔗 Related Documentation
|
|
164
|
+
|
|
165
|
+
- [Main SDK Documentation](../README.md)
|
|
166
|
+
- [Testing Guidelines](../TESTING.md)
|
|
167
|
+
- [Agent Guidelines](../AGENTS.md)
|
|
@@ -23,33 +23,13 @@ from pathlib import Path
|
|
|
23
23
|
|
|
24
24
|
from dotenv import load_dotenv
|
|
25
25
|
import langwatch
|
|
26
|
+
from examples.test_utils.run_cli import run_cli
|
|
26
27
|
|
|
27
28
|
load_dotenv()
|
|
28
29
|
|
|
29
30
|
CLI_EXECUTABLE = ["npx", "langwatch@latest"]
|
|
30
31
|
|
|
31
32
|
|
|
32
|
-
def run_cli(command: list, cwd: Path):
|
|
33
|
-
"""Run CLI command and handle errors."""
|
|
34
|
-
print(f"▶️ {' '.join(command)}")
|
|
35
|
-
try:
|
|
36
|
-
result = subprocess.run(
|
|
37
|
-
command,
|
|
38
|
-
cwd=cwd,
|
|
39
|
-
capture_output=True,
|
|
40
|
-
text=True,
|
|
41
|
-
timeout=30, # 30 second timeout
|
|
42
|
-
input="Y\n", # Answer "Y" to prompts
|
|
43
|
-
)
|
|
44
|
-
if result.returncode != 0:
|
|
45
|
-
print(f"❌ Failed: {result.stderr}")
|
|
46
|
-
raise subprocess.CalledProcessError(result.returncode, command)
|
|
47
|
-
return result
|
|
48
|
-
except subprocess.TimeoutExpired:
|
|
49
|
-
print("❌ Command timed out after 30 seconds")
|
|
50
|
-
raise
|
|
51
|
-
|
|
52
|
-
|
|
53
33
|
def main():
|
|
54
34
|
langwatch.setup()
|
|
55
35
|
|
|
@@ -59,11 +59,11 @@ async def main(message: cl.Message):
|
|
|
59
59
|
"span_id": f"span_{nanoid.generate()}",
|
|
60
60
|
"input": {
|
|
61
61
|
"type": "text",
|
|
62
|
-
"value": message.content,
|
|
62
|
+
"value": "" if index == 0 else message.content,
|
|
63
63
|
},
|
|
64
64
|
"output": {
|
|
65
65
|
"type": "text",
|
|
66
|
-
"value": f"{full_response} (span {index})",
|
|
66
|
+
"value": "" if index == 0 else f"{full_response} (span {index})",
|
|
67
67
|
},
|
|
68
68
|
"timestamps": {
|
|
69
69
|
"started_at": int(time.time() * 1000),
|
|
@@ -79,10 +79,11 @@ async def main(message: cl.Message):
|
|
|
79
79
|
)
|
|
80
80
|
|
|
81
81
|
threads = []
|
|
82
|
-
for i in range(
|
|
82
|
+
for i in range(2):
|
|
83
83
|
thread = threading.Thread(target=send_span, args=(i,))
|
|
84
84
|
threads.append(thread)
|
|
85
85
|
thread.start()
|
|
86
|
+
time.sleep(30)
|
|
86
87
|
|
|
87
88
|
# Wait for all threads to complete
|
|
88
89
|
for thread in threads:
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import subprocess
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def run_cli(command: list, cwd: Path):
|
|
6
|
+
"""Run CLI command and handle errors."""
|
|
7
|
+
print(f"▶️ {' '.join(command)}")
|
|
8
|
+
try:
|
|
9
|
+
result = subprocess.run(
|
|
10
|
+
command,
|
|
11
|
+
cwd=cwd,
|
|
12
|
+
capture_output=True,
|
|
13
|
+
text=True,
|
|
14
|
+
timeout=30, # 30 second timeout
|
|
15
|
+
input="Y\n", # Answer "Y" to prompts
|
|
16
|
+
)
|
|
17
|
+
if result.returncode != 0:
|
|
18
|
+
print(f"❌ Failed: {result.stderr}")
|
|
19
|
+
raise subprocess.CalledProcessError(result.returncode, command)
|
|
20
|
+
return result
|
|
21
|
+
except subprocess.TimeoutExpired:
|
|
22
|
+
print("❌ Command timed out after 30 seconds")
|
|
23
|
+
raise
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "langwatch"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.8.1" # remember to also update it in src/langwatch/__version__.py
|
|
4
4
|
description = "LangWatch Python SDK, for monitoring your LLMs"
|
|
5
5
|
authors = [{ name = "Langwatch Engineers", email = "engineering@langwatch.ai" }]
|
|
6
6
|
requires-python = ">=3.10,<3.14"
|
|
@@ -64,6 +64,11 @@ packages = ["src/langwatch"]
|
|
|
64
64
|
testpaths = ["tests"]
|
|
65
65
|
python_files = "test_*.py"
|
|
66
66
|
python_functions = "test_*"
|
|
67
|
+
markers = [
|
|
68
|
+
"e2e: End-to-end tests that require external services",
|
|
69
|
+
"integration: Integration tests",
|
|
70
|
+
"unit: Unit tests (default)",
|
|
71
|
+
]
|
|
67
72
|
|
|
68
73
|
[dependency-groups]
|
|
69
74
|
dev = ["black>=25.1.0"]
|
|
@@ -99,4 +104,8 @@ examples = [
|
|
|
99
104
|
"strands-agents[otel]>=1.14.0,<2.0.0",
|
|
100
105
|
"unstructured[pdf]>=0.18.3",
|
|
101
106
|
]
|
|
102
|
-
tests = [
|
|
107
|
+
tests = [
|
|
108
|
+
"factory-boy>=3.3.3",
|
|
109
|
+
"pytest-asyncio>=0.21.2",
|
|
110
|
+
"python-dotenv==1.0.1"
|
|
111
|
+
]
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# DO NOT EDIT THIS FILE - IT IS TO MAINTAIN PARITY WITH TYPESCRIPT SDK
|
|
2
|
+
|
|
3
|
+
Feature: Prompt Fetch Policy
|
|
4
|
+
As a developer using the Python SDK
|
|
5
|
+
I want to retrieve prompts using with the same behavior as the
|
|
6
|
+
typescript feature: ../typescript-sdk/specs/prompts/fetch-policy.feature
|
|
7
|
+
|
|
@@ -8,6 +8,8 @@ from .login import login
|
|
|
8
8
|
from .state import get_api_key, get_endpoint
|
|
9
9
|
from .__version__ import __version__
|
|
10
10
|
from .utils.initialization import ensure_setup, setup
|
|
11
|
+
from .prompts.types import FetchPolicy
|
|
12
|
+
|
|
11
13
|
|
|
12
14
|
# Type hints for IntelliSense (only imported for typing)
|
|
13
15
|
from typing import TYPE_CHECKING
|
|
@@ -153,5 +155,5 @@ __all__ = [
|
|
|
153
155
|
"evaluations",
|
|
154
156
|
"langchain",
|
|
155
157
|
"dspy",
|
|
156
|
-
"
|
|
158
|
+
"FetchPolicy",
|
|
157
159
|
]
|
|
@@ -24,6 +24,7 @@ from tqdm import tqdm
|
|
|
24
24
|
import pandas as pd
|
|
25
25
|
|
|
26
26
|
from langwatch.types import Money
|
|
27
|
+
from langwatch.utils.exceptions import better_raise_for_status
|
|
27
28
|
|
|
28
29
|
|
|
29
30
|
class EvaluationResult(BaseModel):
|
|
@@ -150,7 +151,7 @@ class BatchEvaluation:
|
|
|
150
151
|
raise ValueError(
|
|
151
152
|
"API key is not valid, please try to login again with langwatch.login()"
|
|
152
153
|
)
|
|
153
|
-
response
|
|
154
|
+
better_raise_for_status(response)
|
|
154
155
|
experiment_path = response.json()["path"]
|
|
155
156
|
self.experiment_slug = response.json()["slug"]
|
|
156
157
|
|
|
@@ -368,7 +369,7 @@ class BatchEvaluation:
|
|
|
368
369
|
json=body,
|
|
369
370
|
timeout=60,
|
|
370
371
|
)
|
|
371
|
-
response
|
|
372
|
+
better_raise_for_status(response)
|
|
372
373
|
|
|
373
374
|
def wait_for_completion(self):
|
|
374
375
|
async def wait_for_completion(self):
|
|
@@ -414,7 +415,7 @@ async def run_evaluation(
|
|
|
414
415
|
|
|
415
416
|
async with httpx.AsyncClient(timeout=900) as client:
|
|
416
417
|
response = await client.post(**request_params)
|
|
417
|
-
response
|
|
418
|
+
better_raise_for_status(response)
|
|
418
419
|
|
|
419
420
|
result = response.json()
|
|
420
421
|
|
|
@@ -462,7 +463,7 @@ def get_dataset(
|
|
|
462
463
|
|
|
463
464
|
with httpx.Client(timeout=300) as client:
|
|
464
465
|
response = client.get(**request_params)
|
|
465
|
-
response
|
|
466
|
+
better_raise_for_status(response)
|
|
466
467
|
|
|
467
468
|
result = response.json()
|
|
468
469
|
|
|
@@ -5,6 +5,7 @@ import time
|
|
|
5
5
|
import warnings
|
|
6
6
|
import dspy
|
|
7
7
|
from typing import Callable, List, Optional, Any, Type, Union
|
|
8
|
+
from langwatch.utils.exceptions import better_raise_for_status
|
|
8
9
|
from langwatch.utils.transformation import truncate_object_recursively
|
|
9
10
|
from langwatch.telemetry.tracing import LangWatchTrace
|
|
10
11
|
from typing_extensions import TypedDict
|
|
@@ -193,7 +194,7 @@ class LangWatchDSPy:
|
|
|
193
194
|
raise ValueError(
|
|
194
195
|
"API key is not valid, please try to login again with langwatch.login()"
|
|
195
196
|
)
|
|
196
|
-
response
|
|
197
|
+
better_raise_for_status(response)
|
|
197
198
|
|
|
198
199
|
if optimizer and evaluator:
|
|
199
200
|
raise ValueError("You can only provide an optimizer or an evaluator, not both.")
|
|
@@ -386,7 +387,7 @@ class LangWatchDSPy:
|
|
|
386
387
|
data=json.dumps(data), # type: ignore
|
|
387
388
|
timeout=60,
|
|
388
389
|
)
|
|
389
|
-
response
|
|
390
|
+
better_raise_for_status(response)
|
|
390
391
|
self.steps_buffer = []
|
|
391
392
|
|
|
392
393
|
def tracer(self, trace: LangWatchTrace):
|
|
@@ -34,6 +34,7 @@ import langwatch
|
|
|
34
34
|
from langwatch.attributes import AttributeKey
|
|
35
35
|
from langwatch.domain import Money, TypedValueJson
|
|
36
36
|
from langwatch.telemetry.tracing import LangWatchTrace
|
|
37
|
+
from langwatch.utils.exceptions import better_raise_for_status
|
|
37
38
|
from langwatch.utils.transformation import SerializableWithStringFallback
|
|
38
39
|
|
|
39
40
|
from coolname import generate_slug # type: ignore
|
|
@@ -132,7 +133,7 @@ class Evaluation:
|
|
|
132
133
|
raise ValueError(
|
|
133
134
|
"API key is not valid, please try to login again with langwatch.login()"
|
|
134
135
|
)
|
|
135
|
-
response
|
|
136
|
+
better_raise_for_status(response)
|
|
136
137
|
response_json = response.json()
|
|
137
138
|
experiment_path = response_json["path"]
|
|
138
139
|
self.experiment_slug = response_json["slug"]
|
|
@@ -388,7 +389,7 @@ class Evaluation:
|
|
|
388
389
|
data=json.dumps(body, cls=SerializableWithStringFallback), # type: ignore
|
|
389
390
|
timeout=60,
|
|
390
391
|
)
|
|
391
|
-
response
|
|
392
|
+
better_raise_for_status(response)
|
|
392
393
|
|
|
393
394
|
def _wait_for_completion(self):
|
|
394
395
|
async def wait_for_completion(self: Evaluation):
|
|
@@ -12,6 +12,7 @@ from langwatch.telemetry.span import LangWatchSpan
|
|
|
12
12
|
from langwatch.telemetry.context import get_current_span
|
|
13
13
|
from langwatch.state import get_api_key, get_endpoint, get_instance
|
|
14
14
|
from langwatch.attributes import AttributeKey
|
|
15
|
+
from langwatch.utils.exceptions import EvaluatorException, better_raise_for_status
|
|
15
16
|
from pydantic import BaseModel
|
|
16
17
|
|
|
17
18
|
from langwatch.types import (
|
|
@@ -101,7 +102,7 @@ def evaluate(
|
|
|
101
102
|
try:
|
|
102
103
|
with httpx.Client(timeout=900) as client:
|
|
103
104
|
response = client.post(**request_params)
|
|
104
|
-
response
|
|
105
|
+
better_raise_for_status(response, cls=EvaluatorException)
|
|
105
106
|
except Exception as e:
|
|
106
107
|
return _handle_exception(e, span, as_guardrail)
|
|
107
108
|
|
|
@@ -156,7 +157,7 @@ async def async_evaluate(
|
|
|
156
157
|
try:
|
|
157
158
|
async with httpx.AsyncClient(timeout=900) as client:
|
|
158
159
|
response = await client.post(**request_params)
|
|
159
|
-
response
|
|
160
|
+
better_raise_for_status(response)
|
|
160
161
|
except Exception as e:
|
|
161
162
|
return _handle_exception(e, span, as_guardrail)
|
|
162
163
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import httpx
|
|
2
2
|
|
|
3
3
|
import langwatch
|
|
4
|
+
from langwatch.utils.exceptions import better_raise_for_status
|
|
4
5
|
from .state import get_api_key, get_endpoint
|
|
5
6
|
from getpass import getpass
|
|
6
7
|
|
|
@@ -25,7 +26,7 @@ def login(relogin=False):
|
|
|
25
26
|
)
|
|
26
27
|
if response.status_code == 401:
|
|
27
28
|
raise ValueError("API key is not valid, please try to login again")
|
|
28
|
-
response
|
|
29
|
+
better_raise_for_status(response)
|
|
29
30
|
|
|
30
31
|
langwatch.setup(api_key=api_key)
|
|
31
32
|
print("LangWatch API key set")
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
from .prompt_facade import PromptsFacade
|
|
2
|
+
from .types import FetchPolicy
|
|
3
|
+
|
|
4
|
+
__all__ = [
|
|
5
|
+
"PromptsFacade",
|
|
6
|
+
"FetchPolicy",
|
|
7
|
+
]
|
|
8
|
+
|
|
9
|
+
# Cached PromptsFacade instance for module-level method delegation
|
|
10
|
+
_facade_instance: PromptsFacade | None = None
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def _get_facade() -> PromptsFacade:
|
|
14
|
+
"""Get or create the cached PromptsFacade instance."""
|
|
15
|
+
global _facade_instance
|
|
16
|
+
if _facade_instance is None:
|
|
17
|
+
_facade_instance = PromptsFacade.from_global()
|
|
18
|
+
return _facade_instance
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def __getattr__(name: str):
|
|
22
|
+
"""
|
|
23
|
+
Delegate attribute access to PromptsFacade instance.
|
|
24
|
+
|
|
25
|
+
This allows langwatch.prompts to work both as:
|
|
26
|
+
- A module (for submodule access like `from langwatch.prompts.types import FetchPolicy`)
|
|
27
|
+
- A facade (for method access like `langwatch.prompts.get(...)`)
|
|
28
|
+
|
|
29
|
+
When Python imports `langwatch.prompts.types`, it stores `langwatch.prompts` as a module
|
|
30
|
+
in sys.modules, which shadows the lazy-loaded PromptsFacade instance from langwatch.__getattr__.
|
|
31
|
+
This __getattr__ ensures method calls still work by delegating to a PromptsFacade instance.
|
|
32
|
+
"""
|
|
33
|
+
facade = _get_facade()
|
|
34
|
+
if hasattr(facade, name):
|
|
35
|
+
return getattr(facade, name)
|
|
36
|
+
raise AttributeError(f"module '{__name__}' has no attribute '{name}'")
|
|
@@ -139,7 +139,8 @@ def unwrap_response(
|
|
|
139
139
|
error_detail = f": {msg}" if msg else ""
|
|
140
140
|
raise ValueError(f"Invalid prompt request{error_detail}")
|
|
141
141
|
if status == 401:
|
|
142
|
-
|
|
142
|
+
error_detail = f": {msg}" if msg else ""
|
|
143
|
+
raise RuntimeError(f"Authentication error{error_detail}")
|
|
143
144
|
if status >= 500:
|
|
144
145
|
error_detail = f" - {msg}" if msg else ""
|
|
145
146
|
raise RuntimeError(
|
|
@@ -25,8 +25,13 @@ class LocalPromptLoader:
|
|
|
25
25
|
"""Loads prompts from local files in CLI format."""
|
|
26
26
|
|
|
27
27
|
def __init__(self, base_path: Optional[Path] = None):
|
|
28
|
-
"""Initialize with base path (defaults to current working directory)."""
|
|
29
|
-
self.
|
|
28
|
+
"""Initialize with base path (defaults to current working directory at load time)."""
|
|
29
|
+
self._base_path = base_path
|
|
30
|
+
|
|
31
|
+
@property
|
|
32
|
+
def base_path(self) -> Path:
|
|
33
|
+
"""Get the base path, defaulting to current working directory if not set."""
|
|
34
|
+
return self._base_path or Path.cwd()
|
|
30
35
|
|
|
31
36
|
def load_prompt(self, prompt_id: str) -> Optional[PromptData]:
|
|
32
37
|
"""
|