langfun 0.1.2.dev202510310805__tar.gz → 0.1.2.dev202511020804__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of langfun might be problematic. Click here for more details.
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/PKG-INFO +1 -1
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/runners_test.py +3 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/env/__init__.py +5 -3
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/env/base_environment.py +74 -24
- langfun-0.1.2.dev202511020804/langfun/env/base_environment_test.py +473 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/env/base_feature.py +77 -15
- langfun-0.1.2.dev202511020804/langfun/env/base_feature_test.py +228 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/env/base_sandbox.py +40 -124
- langfun-0.1.2.dev202510310805/langfun/env/base_test.py → langfun-0.1.2.dev202511020804/langfun/env/base_sandbox_test.py +274 -730
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/env/event_handlers/__init__.py +1 -1
- langfun-0.1.2.dev202511020804/langfun/env/event_handlers/chain.py +233 -0
- langfun-0.1.2.dev202511020804/langfun/env/event_handlers/chain_test.py +253 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/env/event_handlers/event_logger.py +95 -98
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/env/event_handlers/event_logger_test.py +19 -19
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/env/event_handlers/metric_writer.py +193 -157
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/env/event_handlers/metric_writer_test.py +1 -1
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/env/interface.py +677 -47
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/env/interface_test.py +30 -1
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/env/test_utils.py +111 -82
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun.egg-info/PKG-INFO +1 -1
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun.egg-info/SOURCES.txt +5 -2
- langfun-0.1.2.dev202510310805/langfun/env/event_handlers/base.py +0 -350
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/LICENSE +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/README.md +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/__init__.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/assistant/capabilities/gui/__init__.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/assistant/capabilities/gui/bounding_box_parser.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/assistant/capabilities/gui/bounding_box_parser_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/assistant/capabilities/gui/drawing.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/assistant/capabilities/gui/drawing_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/assistant/capabilities/gui/location.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/assistant/capabilities/gui/location_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/__init__.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/agentic/__init__.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/agentic/action.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/agentic/action_eval.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/agentic/action_eval_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/agentic/action_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/async_support.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/async_support_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/coding/__init__.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/coding/python/__init__.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/coding/python/correction.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/coding/python/correction_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/coding/python/execution.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/coding/python/execution_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/coding/python/generation.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/coding/python/generation_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/coding/python/parsing.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/coding/python/parsing_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/coding/python/sandboxing.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/coding/python/sandboxing_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/component.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/component_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/concurrent.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/concurrent_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/console.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/console_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/data/__init__.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/data/conversion/__init__.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/data/conversion/anthropic.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/data/conversion/anthropic_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/data/conversion/gemini.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/data/conversion/gemini_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/data/conversion/openai.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/data/conversion/openai_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/__init__.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/base.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/base_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/matching.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/matching_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/patching.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/patching_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/scoring.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/scoring_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/__init__.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/checkpointing.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/checkpointing_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/eval_test_helper.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/evaluation.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/evaluation_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/example.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/example_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/experiment.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/experiment_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/metric_values.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/metric_values_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/metrics.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/metrics_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/progress.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/progress_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/progress_tracking.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/progress_tracking_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/reporting.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/reporting_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/eval/v2/runners.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/langfunc.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/langfunc_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/language_model.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/language_model_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/__init__.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/anthropic.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/anthropic_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/azure_openai.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/azure_openai_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/cache/__init__.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/cache/base.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/cache/in_memory.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/cache/in_memory_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/compositional.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/compositional_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/deepseek.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/deepseek_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/fake.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/fake_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/gemini.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/gemini_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/google_genai.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/google_genai_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/groq.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/groq_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/llama_cpp.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/llama_cpp_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/openai.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/openai_compatible.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/openai_compatible_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/openai_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/rest.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/rest_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/vertexai.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/llms/vertexai_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/logging.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/logging_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/mcp/__init__.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/mcp/client.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/mcp/client_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/mcp/session.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/mcp/session_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/mcp/testing/simple_mcp_client.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/mcp/testing/simple_mcp_server.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/mcp/tool.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/mcp/tool_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/memories/__init__.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/memories/conversation_history.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/memories/conversation_history_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/memory.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/message.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/message_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/modalities/__init__.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/modalities/audio.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/modalities/audio_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/modalities/image.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/modalities/image_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/modalities/mime.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/modalities/mime_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/modalities/pdf.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/modalities/pdf_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/modalities/video.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/modalities/video_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/modality.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/modality_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/natural_language.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/natural_language_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/sampling.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/sampling_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/structured/__init__.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/structured/completion.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/structured/completion_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/structured/description.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/structured/description_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/structured/function_generation.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/structured/function_generation_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/structured/mapping.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/structured/mapping_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/structured/parsing.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/structured/parsing_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/structured/querying.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/structured/querying_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/structured/schema.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/structured/schema_generation.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/structured/schema_generation_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/structured/schema_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/structured/scoring.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/structured/scoring_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/structured/tokenization.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/structured/tokenization_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/subscription.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/subscription_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/template.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/template_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/templates/__init__.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/templates/completion.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/templates/completion_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/templates/conversation.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/templates/conversation_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/templates/demonstration.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/templates/demonstration_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/templates/selfplay.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/core/templates/selfplay_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/env/load_balancers.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/env/load_balancers_test.py +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun.egg-info/dependency_links.txt +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun.egg-info/requires.txt +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun.egg-info/top_level.txt +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/setup.cfg +0 -0
- {langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/setup.py +0 -0
|
@@ -24,9 +24,11 @@ from langfun.env.interface import Environment
|
|
|
24
24
|
from langfun.env.interface import Sandbox
|
|
25
25
|
from langfun.env.interface import Feature
|
|
26
26
|
|
|
27
|
+
from langfun.env.interface import EventHandler
|
|
28
|
+
|
|
27
29
|
# Decorators for sandbox/feature methods.
|
|
28
30
|
from langfun.env.interface import treat_as_sandbox_state_error
|
|
29
|
-
from langfun.env.interface import
|
|
31
|
+
from langfun.env.interface import log_activity
|
|
30
32
|
|
|
31
33
|
from langfun.env.base_environment import BaseEnvironment
|
|
32
34
|
from langfun.env.base_sandbox import BaseSandbox
|
|
@@ -35,7 +37,7 @@ from langfun.env.base_feature import BaseFeature
|
|
|
35
37
|
from langfun.env import load_balancers
|
|
36
38
|
from langfun.env.load_balancers import LoadBalancer
|
|
37
39
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
+
# Import all event handlers.
|
|
41
|
+
from langfun.env.event_handlers import *
|
|
40
42
|
|
|
41
43
|
# Google-internal imports.
|
{langfun-0.1.2.dev202510310805 → langfun-0.1.2.dev202511020804}/langfun/env/base_environment.py
RENAMED
|
@@ -36,7 +36,6 @@ import langfun.core as lf
|
|
|
36
36
|
from langfun.env import base_sandbox
|
|
37
37
|
from langfun.env import interface
|
|
38
38
|
from langfun.env import load_balancers
|
|
39
|
-
from langfun.env.event_handlers import base as event_handler_base
|
|
40
39
|
import pyglove as pg
|
|
41
40
|
|
|
42
41
|
|
|
@@ -113,12 +112,13 @@ class BaseEnvironment(interface.Environment):
|
|
|
113
112
|
)
|
|
114
113
|
] = True
|
|
115
114
|
|
|
116
|
-
|
|
117
|
-
|
|
115
|
+
event_handler: Annotated[
|
|
116
|
+
interface.EventHandler,
|
|
118
117
|
(
|
|
119
118
|
'User handler for the environment events.'
|
|
119
|
+
'By default, the no-op event handler is used.'
|
|
120
120
|
)
|
|
121
|
-
] =
|
|
121
|
+
] = interface.EventHandler()
|
|
122
122
|
|
|
123
123
|
outage_grace_period: Annotated[
|
|
124
124
|
float,
|
|
@@ -169,6 +169,7 @@ class BaseEnvironment(interface.Environment):
|
|
|
169
169
|
|
|
170
170
|
self._status = self.Status.CREATED
|
|
171
171
|
self._start_time = None
|
|
172
|
+
|
|
172
173
|
self._sandbox_pool: dict[str, list[base_sandbox.BaseSandbox]] = (
|
|
173
174
|
collections.defaultdict(list)
|
|
174
175
|
)
|
|
@@ -178,6 +179,7 @@ class BaseEnvironment(interface.Environment):
|
|
|
178
179
|
)
|
|
179
180
|
self._housekeep_thread = None
|
|
180
181
|
self._offline_start_time = None
|
|
182
|
+
self._non_sandbox_based_features_with_setup_called = set()
|
|
181
183
|
|
|
182
184
|
# Check image IDs and feature requirements.
|
|
183
185
|
self._check_image_ids()
|
|
@@ -191,7 +193,9 @@ class BaseEnvironment(interface.Environment):
|
|
|
191
193
|
if self.supports_dynamic_image_loading:
|
|
192
194
|
return
|
|
193
195
|
for name, feature in self.features.items():
|
|
194
|
-
if
|
|
196
|
+
if not feature.is_sandbox_based or any(
|
|
197
|
+
feature.is_applicable(image_id) for image_id in self.image_ids
|
|
198
|
+
):
|
|
195
199
|
continue
|
|
196
200
|
raise ValueError(
|
|
197
201
|
f'Feature {name!r} is not applicable to all available images: '
|
|
@@ -266,6 +270,13 @@ class BaseEnvironment(interface.Environment):
|
|
|
266
270
|
def _start(self) -> None:
|
|
267
271
|
"""Implementation of starting the environment."""
|
|
268
272
|
sandbox_startup_infos = []
|
|
273
|
+
self._non_sandbox_based_features_with_setup_called.clear()
|
|
274
|
+
# Setup all non-sandbox-based features.
|
|
275
|
+
for feature in self.non_sandbox_based_features():
|
|
276
|
+
self._non_sandbox_based_features_with_setup_called.add(feature.name)
|
|
277
|
+
feature.setup(sandbox=None)
|
|
278
|
+
|
|
279
|
+
# Setup sandbox pools.
|
|
269
280
|
for image_id in self.image_ids:
|
|
270
281
|
next_sandbox_id = 0
|
|
271
282
|
if self.enable_pooling(image_id):
|
|
@@ -311,10 +322,15 @@ class BaseEnvironment(interface.Environment):
|
|
|
311
322
|
self._housekeep_thread.join()
|
|
312
323
|
self._housekeep_thread = None
|
|
313
324
|
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
325
|
+
# Teardown all non-sandbox-based features.
|
|
326
|
+
for feature in self.non_sandbox_based_features():
|
|
327
|
+
if feature.name in self._non_sandbox_based_features_with_setup_called:
|
|
328
|
+
try:
|
|
329
|
+
feature.teardown()
|
|
330
|
+
except BaseException: # pylint: disable=broad-except
|
|
331
|
+
pass
|
|
317
332
|
|
|
333
|
+
# Shutdown sandbox pools.
|
|
318
334
|
if self._sandbox_pool:
|
|
319
335
|
sandboxes = []
|
|
320
336
|
for sandbox in self._sandbox_pool.values():
|
|
@@ -322,6 +338,10 @@ class BaseEnvironment(interface.Environment):
|
|
|
322
338
|
self._sandbox_pool = {}
|
|
323
339
|
|
|
324
340
|
if sandboxes:
|
|
341
|
+
def _shutdown_sandbox(sandbox: base_sandbox.BaseSandbox) -> None:
|
|
342
|
+
if sandbox is not None:
|
|
343
|
+
sandbox.shutdown()
|
|
344
|
+
|
|
325
345
|
_ = list(
|
|
326
346
|
lf.concurrent_map(
|
|
327
347
|
_shutdown_sandbox,
|
|
@@ -555,8 +575,6 @@ class BaseEnvironment(interface.Environment):
|
|
|
555
575
|
proactive_session_setup=self.proactive_session_setup,
|
|
556
576
|
keepalive_interval=self.sandbox_keepalive_interval,
|
|
557
577
|
)
|
|
558
|
-
for handler in self.event_handlers:
|
|
559
|
-
sandbox.add_event_handler(handler)
|
|
560
578
|
sandbox.start()
|
|
561
579
|
if set_acquired:
|
|
562
580
|
sandbox.set_acquired()
|
|
@@ -636,9 +654,45 @@ class BaseEnvironment(interface.Environment):
|
|
|
636
654
|
indices_by_image_id[image_id].append(i)
|
|
637
655
|
return indices_by_image_id
|
|
638
656
|
|
|
657
|
+
last_housekeep_time = {
|
|
658
|
+
f.name: time.time() for f in self.non_sandbox_based_features()
|
|
659
|
+
}
|
|
660
|
+
|
|
639
661
|
while self._status not in (self.Status.SHUTTING_DOWN, self.Status.OFFLINE):
|
|
640
662
|
housekeep_start_time = time.time()
|
|
663
|
+
feature_housekeep_successes = []
|
|
664
|
+
feature_housekeep_failures = []
|
|
665
|
+
|
|
666
|
+
# Housekeeping non-sandbox-based features.
|
|
667
|
+
for feature in self.non_sandbox_based_features():
|
|
668
|
+
if feature.housekeep_interval is None:
|
|
669
|
+
continue
|
|
670
|
+
if (last_housekeep_time[feature.name]
|
|
671
|
+
+ feature.housekeep_interval < time.time()):
|
|
672
|
+
try:
|
|
673
|
+
feature.housekeep()
|
|
674
|
+
last_housekeep_time[feature.name] = time.time()
|
|
675
|
+
feature_housekeep_successes.append(feature.name)
|
|
676
|
+
except BaseException as e: # pylint: disable=broad-except
|
|
677
|
+
pg.logging.error(
|
|
678
|
+
'[%s/%s]: Feature housekeeping failed with error: %s.'
|
|
679
|
+
'Shutting down environment...',
|
|
680
|
+
self.id,
|
|
681
|
+
feature.name,
|
|
682
|
+
e,
|
|
683
|
+
)
|
|
684
|
+
feature_housekeep_failures.append(feature.name)
|
|
685
|
+
self._housekeep_counter += 1
|
|
686
|
+
self.on_housekeep(
|
|
687
|
+
duration=time.time() - housekeep_start_time,
|
|
688
|
+
error=e,
|
|
689
|
+
feature_housekeep_successes=feature_housekeep_successes,
|
|
690
|
+
feature_housekeep_failures=feature_housekeep_failures,
|
|
691
|
+
)
|
|
692
|
+
self.shutdown()
|
|
693
|
+
return
|
|
641
694
|
|
|
695
|
+
# Replace dead sandboxes.
|
|
642
696
|
is_online = True
|
|
643
697
|
dead_sandbox_entries = []
|
|
644
698
|
for image_id, sandboxes in self._sandbox_pool.items():
|
|
@@ -659,6 +713,8 @@ class BaseEnvironment(interface.Environment):
|
|
|
659
713
|
duration = time.time() - housekeep_start_time
|
|
660
714
|
|
|
661
715
|
kwargs = dict(
|
|
716
|
+
feature_housekeep_successes=feature_housekeep_successes,
|
|
717
|
+
feature_housekeep_failures=feature_housekeep_failures,
|
|
662
718
|
dead_sandboxes=_indices_by_image_id(dead_sandbox_entries),
|
|
663
719
|
replaced_sandboxes=replaced_indices_by_image_id,
|
|
664
720
|
offline_duration=self.offline_duration,
|
|
@@ -667,7 +723,6 @@ class BaseEnvironment(interface.Environment):
|
|
|
667
723
|
self.on_housekeep(duration, **kwargs)
|
|
668
724
|
time.sleep(self.housekeep_interval)
|
|
669
725
|
else:
|
|
670
|
-
self.shutdown()
|
|
671
726
|
self.on_housekeep(
|
|
672
727
|
duration,
|
|
673
728
|
interface.EnvironmentOutageError(
|
|
@@ -675,6 +730,7 @@ class BaseEnvironment(interface.Environment):
|
|
|
675
730
|
),
|
|
676
731
|
**kwargs
|
|
677
732
|
)
|
|
733
|
+
self.shutdown()
|
|
678
734
|
|
|
679
735
|
def _replace_dead_sandboxes(
|
|
680
736
|
self,
|
|
@@ -738,16 +794,14 @@ class BaseEnvironment(interface.Environment):
|
|
|
738
794
|
|
|
739
795
|
def on_starting(self) -> None:
|
|
740
796
|
"""Called when the environment is getting started."""
|
|
741
|
-
|
|
742
|
-
handler.on_environment_starting(self)
|
|
797
|
+
self.event_handler.on_environment_starting(self)
|
|
743
798
|
|
|
744
799
|
def on_start(
|
|
745
800
|
self,
|
|
746
801
|
duration: float, error: BaseException | None = None
|
|
747
802
|
) -> None:
|
|
748
803
|
"""Called when the environment is started."""
|
|
749
|
-
|
|
750
|
-
handler.on_environment_start(self, duration, error)
|
|
804
|
+
self.event_handler.on_environment_start(self, duration, error)
|
|
751
805
|
|
|
752
806
|
def on_housekeep(
|
|
753
807
|
self,
|
|
@@ -756,16 +810,13 @@ class BaseEnvironment(interface.Environment):
|
|
|
756
810
|
**kwargs
|
|
757
811
|
) -> None:
|
|
758
812
|
"""Called when the environment finishes a round of housekeeping."""
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
self, housekeep_counter, duration, error, **kwargs
|
|
763
|
-
)
|
|
813
|
+
self.event_handler.on_environment_housekeep(
|
|
814
|
+
self, self.housekeep_counter, duration, error, **kwargs
|
|
815
|
+
)
|
|
764
816
|
|
|
765
817
|
def on_shutting_down(self) -> None:
|
|
766
818
|
"""Called when the environment is shutting down."""
|
|
767
|
-
|
|
768
|
-
handler.on_environment_shutting_down(self, self.offline_duration)
|
|
819
|
+
self.event_handler.on_environment_shutting_down(self, self.offline_duration)
|
|
769
820
|
|
|
770
821
|
def on_shutdown(
|
|
771
822
|
self,
|
|
@@ -773,5 +824,4 @@ class BaseEnvironment(interface.Environment):
|
|
|
773
824
|
error: BaseException | None = None) -> None:
|
|
774
825
|
"""Called when the environment is shutdown."""
|
|
775
826
|
lifetime = (time.time() - self.start_time) if self.start_time else 0.0
|
|
776
|
-
|
|
777
|
-
handler.on_environment_shutdown(self, duration, lifetime, error)
|
|
827
|
+
self.event_handler.on_environment_shutdown(self, duration, lifetime, error)
|