langfun 0.1.2.dev202510280805__tar.gz → 0.1.2.dev202510300805__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.

Files changed (204) hide show
  1. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/PKG-INFO +1 -1
  2. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/agentic/action.py +31 -3
  3. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/agentic/action_test.py +25 -0
  4. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/gemini.py +3 -3
  5. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/env/__init__.py +4 -0
  6. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/env/base_environment.py +247 -105
  7. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/env/base_feature.py +15 -0
  8. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/env/base_sandbox.py +47 -240
  9. langfun-0.1.2.dev202510300805/langfun/env/base_test.py +1691 -0
  10. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/env/event_handlers/event_logger_test.py +2 -2
  11. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/env/event_handlers/metric_writer.py +49 -0
  12. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/env/event_handlers/metric_writer_test.py +19 -2
  13. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/env/interface.py +197 -13
  14. langfun-0.1.2.dev202510300805/langfun/env/interface_test.py +122 -0
  15. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/env/load_balancers_test.py +19 -0
  16. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/env/test_utils.py +10 -7
  17. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun.egg-info/PKG-INFO +1 -1
  18. langfun-0.1.2.dev202510280805/langfun/env/base_test.py +0 -1481
  19. langfun-0.1.2.dev202510280805/langfun/env/interface_test.py +0 -43
  20. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/LICENSE +0 -0
  21. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/README.md +0 -0
  22. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/__init__.py +0 -0
  23. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/assistant/capabilities/gui/__init__.py +0 -0
  24. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/assistant/capabilities/gui/bounding_box_parser.py +0 -0
  25. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/assistant/capabilities/gui/bounding_box_parser_test.py +0 -0
  26. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/assistant/capabilities/gui/drawing.py +0 -0
  27. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/assistant/capabilities/gui/drawing_test.py +0 -0
  28. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/assistant/capabilities/gui/location.py +0 -0
  29. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/assistant/capabilities/gui/location_test.py +0 -0
  30. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/__init__.py +0 -0
  31. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/agentic/__init__.py +0 -0
  32. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/agentic/action_eval.py +0 -0
  33. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/agentic/action_eval_test.py +0 -0
  34. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/async_support.py +0 -0
  35. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/async_support_test.py +0 -0
  36. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/coding/__init__.py +0 -0
  37. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/coding/python/__init__.py +0 -0
  38. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/coding/python/correction.py +0 -0
  39. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/coding/python/correction_test.py +0 -0
  40. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/coding/python/execution.py +0 -0
  41. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/coding/python/execution_test.py +0 -0
  42. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/coding/python/generation.py +0 -0
  43. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/coding/python/generation_test.py +0 -0
  44. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/coding/python/parsing.py +0 -0
  45. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/coding/python/parsing_test.py +0 -0
  46. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/coding/python/sandboxing.py +0 -0
  47. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/coding/python/sandboxing_test.py +0 -0
  48. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/component.py +0 -0
  49. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/component_test.py +0 -0
  50. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/concurrent.py +0 -0
  51. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/concurrent_test.py +0 -0
  52. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/console.py +0 -0
  53. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/console_test.py +0 -0
  54. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/data/__init__.py +0 -0
  55. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/data/conversion/__init__.py +0 -0
  56. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/data/conversion/anthropic.py +0 -0
  57. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/data/conversion/anthropic_test.py +0 -0
  58. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/data/conversion/gemini.py +0 -0
  59. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/data/conversion/gemini_test.py +0 -0
  60. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/data/conversion/openai.py +0 -0
  61. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/data/conversion/openai_test.py +0 -0
  62. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/__init__.py +0 -0
  63. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/base.py +0 -0
  64. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/base_test.py +0 -0
  65. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/matching.py +0 -0
  66. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/matching_test.py +0 -0
  67. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/patching.py +0 -0
  68. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/patching_test.py +0 -0
  69. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/scoring.py +0 -0
  70. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/scoring_test.py +0 -0
  71. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/__init__.py +0 -0
  72. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/checkpointing.py +0 -0
  73. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/checkpointing_test.py +0 -0
  74. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/eval_test_helper.py +0 -0
  75. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/evaluation.py +0 -0
  76. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/evaluation_test.py +0 -0
  77. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/example.py +0 -0
  78. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/example_test.py +0 -0
  79. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/experiment.py +0 -0
  80. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/experiment_test.py +0 -0
  81. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/metric_values.py +0 -0
  82. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/metric_values_test.py +0 -0
  83. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/metrics.py +0 -0
  84. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/metrics_test.py +0 -0
  85. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/progress.py +0 -0
  86. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/progress_test.py +0 -0
  87. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/progress_tracking.py +0 -0
  88. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/progress_tracking_test.py +0 -0
  89. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/reporting.py +0 -0
  90. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/reporting_test.py +0 -0
  91. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/runners.py +0 -0
  92. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/eval/v2/runners_test.py +0 -0
  93. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/langfunc.py +0 -0
  94. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/langfunc_test.py +0 -0
  95. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/language_model.py +0 -0
  96. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/language_model_test.py +0 -0
  97. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/__init__.py +0 -0
  98. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/anthropic.py +0 -0
  99. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/anthropic_test.py +0 -0
  100. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/azure_openai.py +0 -0
  101. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/azure_openai_test.py +0 -0
  102. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/cache/__init__.py +0 -0
  103. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/cache/base.py +0 -0
  104. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/cache/in_memory.py +0 -0
  105. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/cache/in_memory_test.py +0 -0
  106. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/compositional.py +0 -0
  107. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/compositional_test.py +0 -0
  108. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/deepseek.py +0 -0
  109. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/deepseek_test.py +0 -0
  110. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/fake.py +0 -0
  111. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/fake_test.py +0 -0
  112. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/gemini_test.py +0 -0
  113. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/google_genai.py +0 -0
  114. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/google_genai_test.py +0 -0
  115. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/groq.py +0 -0
  116. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/groq_test.py +0 -0
  117. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/llama_cpp.py +0 -0
  118. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/llama_cpp_test.py +0 -0
  119. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/openai.py +0 -0
  120. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/openai_compatible.py +0 -0
  121. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/openai_compatible_test.py +0 -0
  122. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/openai_test.py +0 -0
  123. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/rest.py +0 -0
  124. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/rest_test.py +0 -0
  125. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/vertexai.py +0 -0
  126. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/llms/vertexai_test.py +0 -0
  127. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/logging.py +0 -0
  128. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/logging_test.py +0 -0
  129. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/mcp/__init__.py +0 -0
  130. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/mcp/client.py +0 -0
  131. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/mcp/client_test.py +0 -0
  132. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/mcp/session.py +0 -0
  133. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/mcp/session_test.py +0 -0
  134. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/mcp/testing/simple_mcp_client.py +0 -0
  135. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/mcp/testing/simple_mcp_server.py +0 -0
  136. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/mcp/tool.py +0 -0
  137. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/mcp/tool_test.py +0 -0
  138. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/memories/__init__.py +0 -0
  139. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/memories/conversation_history.py +0 -0
  140. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/memories/conversation_history_test.py +0 -0
  141. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/memory.py +0 -0
  142. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/message.py +0 -0
  143. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/message_test.py +0 -0
  144. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/modalities/__init__.py +0 -0
  145. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/modalities/audio.py +0 -0
  146. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/modalities/audio_test.py +0 -0
  147. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/modalities/image.py +0 -0
  148. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/modalities/image_test.py +0 -0
  149. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/modalities/mime.py +0 -0
  150. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/modalities/mime_test.py +0 -0
  151. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/modalities/pdf.py +0 -0
  152. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/modalities/pdf_test.py +0 -0
  153. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/modalities/video.py +0 -0
  154. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/modalities/video_test.py +0 -0
  155. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/modality.py +0 -0
  156. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/modality_test.py +0 -0
  157. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/natural_language.py +0 -0
  158. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/natural_language_test.py +0 -0
  159. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/sampling.py +0 -0
  160. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/sampling_test.py +0 -0
  161. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/structured/__init__.py +0 -0
  162. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/structured/completion.py +0 -0
  163. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/structured/completion_test.py +0 -0
  164. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/structured/description.py +0 -0
  165. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/structured/description_test.py +0 -0
  166. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/structured/function_generation.py +0 -0
  167. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/structured/function_generation_test.py +0 -0
  168. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/structured/mapping.py +0 -0
  169. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/structured/mapping_test.py +0 -0
  170. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/structured/parsing.py +0 -0
  171. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/structured/parsing_test.py +0 -0
  172. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/structured/querying.py +0 -0
  173. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/structured/querying_test.py +0 -0
  174. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/structured/schema.py +0 -0
  175. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/structured/schema_generation.py +0 -0
  176. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/structured/schema_generation_test.py +0 -0
  177. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/structured/schema_test.py +0 -0
  178. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/structured/scoring.py +0 -0
  179. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/structured/scoring_test.py +0 -0
  180. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/structured/tokenization.py +0 -0
  181. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/structured/tokenization_test.py +0 -0
  182. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/subscription.py +0 -0
  183. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/subscription_test.py +0 -0
  184. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/template.py +0 -0
  185. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/template_test.py +0 -0
  186. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/templates/__init__.py +0 -0
  187. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/templates/completion.py +0 -0
  188. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/templates/completion_test.py +0 -0
  189. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/templates/conversation.py +0 -0
  190. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/templates/conversation_test.py +0 -0
  191. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/templates/demonstration.py +0 -0
  192. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/templates/demonstration_test.py +0 -0
  193. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/templates/selfplay.py +0 -0
  194. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/core/templates/selfplay_test.py +0 -0
  195. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/env/event_handlers/__init__.py +0 -0
  196. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/env/event_handlers/base.py +0 -0
  197. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/env/event_handlers/event_logger.py +0 -0
  198. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun/env/load_balancers.py +0 -0
  199. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun.egg-info/SOURCES.txt +0 -0
  200. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun.egg-info/dependency_links.txt +0 -0
  201. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun.egg-info/requires.txt +0 -0
  202. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/langfun.egg-info/top_level.txt +0 -0
  203. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/setup.cfg +0 -0
  204. {langfun-0.1.2.dev202510280805 → langfun-0.1.2.dev202510300805}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langfun
3
- Version: 0.1.2.dev202510280805
3
+ Version: 0.1.2.dev202510300805
4
4
  Summary: Langfun: Language as Functions.
5
5
  Home-page: https://github.com/google/langfun
6
6
  Author: Langfun Authors
@@ -538,6 +538,18 @@ class ExecutionTrace(pg.Object, pg.views.html.HtmlTreeView.Extension):
538
538
  remove_class=['not-started'],
539
539
  )
540
540
 
541
+ def remove(self, item: TracedItem) -> None:
542
+ """Removes an item from the sequence."""
543
+ index = self.items.index(item)
544
+ if index == -1:
545
+ raise ValueError(f'Item not found in execution trace: {item!r}')
546
+
547
+ with pg.notify_on_change(False):
548
+ self.items.pop(index)
549
+
550
+ if self._tab_control is not None:
551
+ self._tab_control.remove(index)
552
+
541
553
  def extend(self, items: Iterable[TracedItem]) -> None:
542
554
  """Extends the sequence with a list of items."""
543
555
  for item in items:
@@ -1648,13 +1660,20 @@ class Session(pg.Object, pg.views.html.HtmlTreeView.Extension):
1648
1660
  @contextlib.contextmanager
1649
1661
  def track_queries(
1650
1662
  self,
1651
- phase: str | None = None
1663
+ phase: str | None = None,
1664
+ track_if: Callable[
1665
+ [lf_structured.QueryInvocation],
1666
+ bool
1667
+ ] | None = None,
1652
1668
  ) -> Iterator[list[lf_structured.QueryInvocation]]:
1653
1669
  """Tracks `lf.query` made within the context.
1654
1670
 
1655
1671
  Args:
1656
1672
  phase: The name of a new phase to track the queries in. If not provided,
1657
1673
  the queries will be tracked in the parent phase.
1674
+ track_if: A function that takes a `lf_structured.QueryInvocation` and
1675
+ returns True if the query should be included in the result. If None,
1676
+ all queries (including failed queries) will be included.
1658
1677
 
1659
1678
  Yields:
1660
1679
  A list of `lf.QueryInvocation` objects, each for a single `lf.query`
@@ -1673,6 +1692,11 @@ class Session(pg.Object, pg.views.html.HtmlTreeView.Extension):
1673
1692
  self.event_handler.on_query_start(self, self._current_action, invocation)
1674
1693
 
1675
1694
  def _query_end(invocation: lf_structured.QueryInvocation):
1695
+ if track_if is not None and not track_if(invocation):
1696
+ self._current_execution.remove(invocation)
1697
+ # Even if the query is not included in the execution trace, we still
1698
+ # count the usage summary to the current execution and trigger the
1699
+ # event handler to log the query.
1676
1700
  self._current_execution.merge_usage_summary(invocation.usage_summary)
1677
1701
  self.event_handler.on_query_end(self, self._current_action, invocation)
1678
1702
 
@@ -1705,8 +1729,9 @@ class Session(pg.Object, pg.views.html.HtmlTreeView.Extension):
1705
1729
  *,
1706
1730
  lm: lf.LanguageModel,
1707
1731
  examples: list[lf_structured.MappingExample] | None = None,
1732
+ track_if: Callable[[lf_structured.QueryInvocation], bool] | None = None,
1708
1733
  **kwargs
1709
- ) -> Any:
1734
+ ) -> Any:
1710
1735
  """Calls `lf.query` and associates it with the current invocation.
1711
1736
 
1712
1737
  The following code are equivalent:
@@ -1731,12 +1756,15 @@ class Session(pg.Object, pg.views.html.HtmlTreeView.Extension):
1731
1756
  default: The default value to return if the query fails.
1732
1757
  lm: The language model to use for the query.
1733
1758
  examples: The examples to use for the query.
1759
+ track_if: A function that takes a `lf_structured.QueryInvocation`
1760
+ and returns True if the query should be tracked.
1761
+ If None, all queries (including failed queries) will be tracked.
1734
1762
  **kwargs: Additional keyword arguments to pass to `lf.query`.
1735
1763
 
1736
1764
  Returns:
1737
1765
  The result of the query.
1738
1766
  """
1739
- with self.track_queries():
1767
+ with self.track_queries(track_if=track_if):
1740
1768
  return lf_structured.query(
1741
1769
  prompt,
1742
1770
  schema=schema,
@@ -530,6 +530,31 @@ class SessionTest(unittest.TestCase):
530
530
  self.assertIn('agent@', session.id)
531
531
  self.assertIsInstance(session.as_message(), lf.AIMessage)
532
532
 
533
+ def test_query_with_track_if(self):
534
+ lm = fake.StaticResponse('lm response')
535
+ session = action_lib.Session()
536
+
537
+ # Render session to trigger javascript updates to the HTML when
538
+ # operating on the session.
539
+ _ = session.to_html()
540
+ with session:
541
+ # This query will succeed.
542
+ session.query(
543
+ 'prompt1',
544
+ schema=None,
545
+ lm=lm,
546
+ track_if=lambda q: not q.has_error,
547
+ default=None)
548
+ # This query will fail during parsing.
549
+ session.query(
550
+ 'prompt2',
551
+ schema=int,
552
+ lm=lm,
553
+ track_if=lambda q: not q.has_error,
554
+ default=None)
555
+ self.assertEqual(len(session.root.queries), 1)
556
+ self.assertIsNone(session.root.queries[0].error)
557
+
533
558
 
534
559
  if __name__ == '__main__':
535
560
  unittest.main()
@@ -830,9 +830,9 @@ class Gemini(rest.REST):
830
830
  )
831
831
 
832
832
  def _error(self, status_code: int, content: str) -> lf.LMError:
833
- if (
834
- status_code == 400
835
- and b'exceeds the maximum number of tokens' in content
833
+ if status_code == 400 and (
834
+ b'exceeds the maximum number of tokens' in content
835
+ or b'Reduce the input token count and try again.' in content
836
836
  ):
837
837
  return lf.ContextLimitError(f'{status_code}: {content}')
838
838
  return super()._error(status_code, content)
@@ -24,6 +24,10 @@ 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
+ # Decorators for sandbox/feature methods.
28
+ from langfun.env.interface import treat_as_sandbox_state_error
29
+ from langfun.env.interface import log_sandbox_activity
30
+
27
31
  from langfun.env.base_environment import BaseEnvironment
28
32
  from langfun.env.base_sandbox import BaseSandbox
29
33
  from langfun.env.base_feature import BaseFeature