langfun 0.1.2.dev202510080805__tar.gz → 0.1.2.dev202510100805__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 (193) hide show
  1. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/PKG-INFO +1 -1
  2. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/language_model.py +1 -1
  3. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/structured/querying.py +3 -0
  4. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/env/event_handlers/metric_writer.py +52 -18
  5. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/env/event_handlers/metric_writer_test.py +41 -14
  6. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun.egg-info/PKG-INFO +1 -1
  7. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/LICENSE +0 -0
  8. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/README.md +0 -0
  9. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/__init__.py +0 -0
  10. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/assistant/capabilities/gui/__init__.py +0 -0
  11. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/assistant/capabilities/gui/bounding_box_parser.py +0 -0
  12. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/assistant/capabilities/gui/bounding_box_parser_test.py +0 -0
  13. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/assistant/capabilities/gui/drawing.py +0 -0
  14. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/assistant/capabilities/gui/drawing_test.py +0 -0
  15. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/assistant/capabilities/gui/location.py +0 -0
  16. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/assistant/capabilities/gui/location_test.py +0 -0
  17. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/__init__.py +0 -0
  18. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/agentic/__init__.py +0 -0
  19. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/agentic/action.py +0 -0
  20. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/agentic/action_eval.py +0 -0
  21. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/agentic/action_eval_test.py +0 -0
  22. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/agentic/action_test.py +0 -0
  23. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/async_support.py +0 -0
  24. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/async_support_test.py +0 -0
  25. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/coding/__init__.py +0 -0
  26. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/coding/python/__init__.py +0 -0
  27. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/coding/python/correction.py +0 -0
  28. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/coding/python/correction_test.py +0 -0
  29. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/coding/python/execution.py +0 -0
  30. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/coding/python/execution_test.py +0 -0
  31. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/coding/python/generation.py +0 -0
  32. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/coding/python/generation_test.py +0 -0
  33. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/coding/python/parsing.py +0 -0
  34. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/coding/python/parsing_test.py +0 -0
  35. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/coding/python/sandboxing.py +0 -0
  36. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/coding/python/sandboxing_test.py +0 -0
  37. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/component.py +0 -0
  38. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/component_test.py +0 -0
  39. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/concurrent.py +0 -0
  40. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/concurrent_test.py +0 -0
  41. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/console.py +0 -0
  42. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/console_test.py +0 -0
  43. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/data/__init__.py +0 -0
  44. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/data/conversion/__init__.py +0 -0
  45. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/data/conversion/anthropic.py +0 -0
  46. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/data/conversion/anthropic_test.py +0 -0
  47. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/data/conversion/gemini.py +0 -0
  48. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/data/conversion/gemini_test.py +0 -0
  49. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/data/conversion/openai.py +0 -0
  50. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/data/conversion/openai_test.py +0 -0
  51. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/__init__.py +0 -0
  52. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/base.py +0 -0
  53. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/base_test.py +0 -0
  54. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/matching.py +0 -0
  55. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/matching_test.py +0 -0
  56. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/patching.py +0 -0
  57. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/patching_test.py +0 -0
  58. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/scoring.py +0 -0
  59. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/scoring_test.py +0 -0
  60. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/__init__.py +0 -0
  61. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/checkpointing.py +0 -0
  62. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/checkpointing_test.py +0 -0
  63. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/eval_test_helper.py +0 -0
  64. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/evaluation.py +0 -0
  65. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/evaluation_test.py +0 -0
  66. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/example.py +0 -0
  67. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/example_test.py +0 -0
  68. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/experiment.py +0 -0
  69. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/experiment_test.py +0 -0
  70. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/metric_values.py +0 -0
  71. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/metric_values_test.py +0 -0
  72. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/metrics.py +0 -0
  73. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/metrics_test.py +0 -0
  74. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/progress.py +0 -0
  75. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/progress_test.py +0 -0
  76. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/progress_tracking.py +0 -0
  77. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/progress_tracking_test.py +0 -0
  78. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/reporting.py +0 -0
  79. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/reporting_test.py +0 -0
  80. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/runners.py +0 -0
  81. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/eval/v2/runners_test.py +0 -0
  82. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/langfunc.py +0 -0
  83. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/langfunc_test.py +0 -0
  84. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/language_model_test.py +0 -0
  85. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/__init__.py +0 -0
  86. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/anthropic.py +0 -0
  87. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/anthropic_test.py +0 -0
  88. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/azure_openai.py +0 -0
  89. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/azure_openai_test.py +0 -0
  90. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/cache/__init__.py +0 -0
  91. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/cache/base.py +0 -0
  92. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/cache/in_memory.py +0 -0
  93. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/cache/in_memory_test.py +0 -0
  94. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/compositional.py +0 -0
  95. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/compositional_test.py +0 -0
  96. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/deepseek.py +0 -0
  97. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/deepseek_test.py +0 -0
  98. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/fake.py +0 -0
  99. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/fake_test.py +0 -0
  100. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/gemini.py +0 -0
  101. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/gemini_test.py +0 -0
  102. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/google_genai.py +0 -0
  103. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/google_genai_test.py +0 -0
  104. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/groq.py +0 -0
  105. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/groq_test.py +0 -0
  106. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/llama_cpp.py +0 -0
  107. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/llama_cpp_test.py +0 -0
  108. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/openai.py +0 -0
  109. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/openai_compatible.py +0 -0
  110. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/openai_compatible_test.py +0 -0
  111. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/openai_test.py +0 -0
  112. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/rest.py +0 -0
  113. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/rest_test.py +0 -0
  114. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/vertexai.py +0 -0
  115. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/llms/vertexai_test.py +0 -0
  116. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/logging.py +0 -0
  117. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/logging_test.py +0 -0
  118. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/memories/__init__.py +0 -0
  119. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/memories/conversation_history.py +0 -0
  120. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/memories/conversation_history_test.py +0 -0
  121. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/memory.py +0 -0
  122. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/message.py +0 -0
  123. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/message_test.py +0 -0
  124. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/modalities/__init__.py +0 -0
  125. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/modalities/audio.py +0 -0
  126. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/modalities/audio_test.py +0 -0
  127. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/modalities/image.py +0 -0
  128. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/modalities/image_test.py +0 -0
  129. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/modalities/mime.py +0 -0
  130. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/modalities/mime_test.py +0 -0
  131. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/modalities/pdf.py +0 -0
  132. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/modalities/pdf_test.py +0 -0
  133. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/modalities/video.py +0 -0
  134. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/modalities/video_test.py +0 -0
  135. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/modality.py +0 -0
  136. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/modality_test.py +0 -0
  137. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/natural_language.py +0 -0
  138. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/natural_language_test.py +0 -0
  139. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/sampling.py +0 -0
  140. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/sampling_test.py +0 -0
  141. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/structured/__init__.py +0 -0
  142. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/structured/completion.py +0 -0
  143. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/structured/completion_test.py +0 -0
  144. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/structured/description.py +0 -0
  145. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/structured/description_test.py +0 -0
  146. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/structured/function_generation.py +0 -0
  147. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/structured/function_generation_test.py +0 -0
  148. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/structured/mapping.py +0 -0
  149. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/structured/mapping_test.py +0 -0
  150. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/structured/parsing.py +0 -0
  151. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/structured/parsing_test.py +0 -0
  152. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/structured/querying_test.py +0 -0
  153. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/structured/schema.py +0 -0
  154. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/structured/schema_generation.py +0 -0
  155. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/structured/schema_generation_test.py +0 -0
  156. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/structured/schema_test.py +0 -0
  157. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/structured/scoring.py +0 -0
  158. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/structured/scoring_test.py +0 -0
  159. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/structured/tokenization.py +0 -0
  160. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/structured/tokenization_test.py +0 -0
  161. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/subscription.py +0 -0
  162. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/subscription_test.py +0 -0
  163. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/template.py +0 -0
  164. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/template_test.py +0 -0
  165. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/templates/__init__.py +0 -0
  166. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/templates/completion.py +0 -0
  167. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/templates/completion_test.py +0 -0
  168. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/templates/conversation.py +0 -0
  169. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/templates/conversation_test.py +0 -0
  170. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/templates/demonstration.py +0 -0
  171. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/templates/demonstration_test.py +0 -0
  172. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/templates/selfplay.py +0 -0
  173. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/core/templates/selfplay_test.py +0 -0
  174. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/env/__init__.py +0 -0
  175. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/env/base_environment.py +0 -0
  176. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/env/base_feature.py +0 -0
  177. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/env/base_sandbox.py +0 -0
  178. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/env/base_test.py +0 -0
  179. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/env/event_handlers/__init__.py +0 -0
  180. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/env/event_handlers/base.py +0 -0
  181. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/env/event_handlers/event_logger.py +0 -0
  182. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/env/event_handlers/event_logger_test.py +0 -0
  183. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/env/interface.py +0 -0
  184. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/env/interface_test.py +0 -0
  185. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/env/load_balancers.py +0 -0
  186. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/env/load_balancers_test.py +0 -0
  187. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun/env/test_utils.py +0 -0
  188. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun.egg-info/SOURCES.txt +0 -0
  189. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun.egg-info/dependency_links.txt +0 -0
  190. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun.egg-info/requires.txt +0 -0
  191. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/langfun.egg-info/top_level.txt +0 -0
  192. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/setup.cfg +0 -0
  193. {langfun-0.1.2.dev202510080805 → langfun-0.1.2.dev202510100805}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langfun
3
- Version: 0.1.2.dev202510080805
3
+ Version: 0.1.2.dev202510100805
4
4
  Summary: Langfun: Language as Functions.
5
5
  Home-page: https://github.com/google/langfun
6
6
  Author: Langfun Authors
@@ -1462,7 +1462,7 @@ class _Metrics:
1462
1462
  'Number of calls to the language model.',
1463
1463
  parameters={'model': str, 'error': str},
1464
1464
  )
1465
- self.language_model_call_duration_ms = self._metrics.get_scalar(
1465
+ self.language_model_call_duration_ms = self._metrics.get_distribution(
1466
1466
  'language_model_call_duration_ms',
1467
1467
  'Duration of calls to the language model in milliseconds.',
1468
1468
  parameters={'model': str, 'error': str},
@@ -446,6 +446,9 @@ def query(
446
446
  **kwargs: Additional keyword arguments for:
447
447
  - Rendering templates (e.g., `template_str`, `preamble`),
448
448
  - Configuring `lf.structured.Mapping`.
449
+ - metadata_xxx, which will be passed through to the rendered message
450
+ metadata under key `xxx`. This allows LLM behavior customization based
451
+ on metadata `xxx` from the prompt.
449
452
 
450
453
  Returns:
451
454
  The result of the query:
@@ -33,12 +33,12 @@ class MetricWriter(pg.Object, base.EventHandler):
33
33
  self,
34
34
  name: str,
35
35
  description: str,
36
- parameters: dict[str, type[str]] | None = None
36
+ parameters: dict[str, type[str]] | None = None,
37
37
  ) -> pg.monitoring.Counter:
38
38
  return self._metric_collection.get_counter(
39
39
  name=name,
40
40
  description=description,
41
- parameters=parameters
41
+ parameters=parameters,
42
42
  )
43
43
 
44
44
  def _get_scalar(
@@ -53,9 +53,21 @@ class MetricWriter(pg.Object, base.EventHandler):
53
53
  parameters=parameters
54
54
  )
55
55
 
56
+ def _get_distribution(
57
+ self,
58
+ name: str,
59
+ description: str,
60
+ parameters: dict[str, type[str]] | None = None
61
+ ) -> pg.monitoring.Metric:
62
+ return self._metric_collection.get_distribution(
63
+ name=name,
64
+ description=description,
65
+ parameters=parameters
66
+ )
67
+
56
68
  def _error_tag(self, error: BaseException | None) -> str:
57
69
  if error is None:
58
- return ''
70
+ return 'Success'
59
71
  return pg.utils.ErrorInfo.from_exception(error).tag
60
72
 
61
73
  def _initialize_metrics(self) -> None:
@@ -67,7 +79,7 @@ class MetricWriter(pg.Object, base.EventHandler):
67
79
  # Environment metrics.
68
80
  #
69
81
 
70
- self._environment_housekeep_duration_ms = self._get_scalar(
82
+ self._environment_housekeep_duration_ms = self._get_distribution(
71
83
  'environment_housekeep_duration_ms',
72
84
  description='Environment housekeeping duration in milliseconds',
73
85
  parameters={
@@ -100,6 +112,15 @@ class MetricWriter(pg.Object, base.EventHandler):
100
112
  'error': str
101
113
  }
102
114
  )
115
+ self._sandbox_count = self._get_scalar(
116
+ 'sandbox_count',
117
+ description='Sandbox count',
118
+ parameters={
119
+ 'app': str,
120
+ 'environment_id': str,
121
+ 'status': str,
122
+ },
123
+ )
103
124
  self._sandbox_housekeep = self._get_counter(
104
125
  'sandbox_housekeep',
105
126
  description='Sandbox housekeeping counter',
@@ -121,7 +142,7 @@ class MetricWriter(pg.Object, base.EventHandler):
121
142
  )
122
143
 
123
144
  # Sandbox scalars.
124
- self._sandbox_lifetime_ms = self._get_scalar(
145
+ self._sandbox_lifetime_ms = self._get_distribution(
125
146
  'sandbox_lifetime_ms',
126
147
  description='Sandbox life time in milliseconds',
127
148
  parameters={
@@ -130,7 +151,7 @@ class MetricWriter(pg.Object, base.EventHandler):
130
151
  'error': str,
131
152
  }
132
153
  )
133
- self._sandbox_start_duration_ms = self._get_scalar(
154
+ self._sandbox_start_duration_ms = self._get_distribution(
134
155
  'sandbox_start_duration_ms',
135
156
  description='Sandbox start duration in milliseconds',
136
157
  parameters={
@@ -139,7 +160,7 @@ class MetricWriter(pg.Object, base.EventHandler):
139
160
  'error': str,
140
161
  }
141
162
  )
142
- self._sandbox_shutdown_duration_ms = self._get_scalar(
163
+ self._sandbox_shutdown_duration_ms = self._get_distribution(
143
164
  'sandbox_shutdown_duration_ms',
144
165
  description='Sandbox shutdown duration in milliseconds',
145
166
  parameters={
@@ -148,7 +169,7 @@ class MetricWriter(pg.Object, base.EventHandler):
148
169
  'error': str,
149
170
  }
150
171
  )
151
- self._sandbox_housekeep_duration_ms = self._get_scalar(
172
+ self._sandbox_housekeep_duration_ms = self._get_distribution(
152
173
  'sandbox_housekeep_duration_ms',
153
174
  description='Sandbox housekeeping duration in milliseconds',
154
175
  parameters={
@@ -157,7 +178,7 @@ class MetricWriter(pg.Object, base.EventHandler):
157
178
  'error': str,
158
179
  }
159
180
  )
160
- self._sandbox_status_duration_ms = self._get_scalar(
181
+ self._sandbox_status_duration_ms = self._get_distribution(
161
182
  'sandbox_status_duration_ms',
162
183
  description='Sandbox duration of specific status in milliseconds',
163
184
  parameters={
@@ -166,7 +187,7 @@ class MetricWriter(pg.Object, base.EventHandler):
166
187
  'status': str,
167
188
  }
168
189
  )
169
- self._sandbox_activity_duration_ms = self._get_scalar(
190
+ self._sandbox_activity_duration_ms = self._get_distribution(
170
191
  'sandbox_activity_duration_ms',
171
192
  description='Sandbox activity duration in milliseconds',
172
193
  parameters={
@@ -234,7 +255,7 @@ class MetricWriter(pg.Object, base.EventHandler):
234
255
  )
235
256
 
236
257
  # Feature scalars.
237
- self._feature_setup_duration_ms = self._get_scalar(
258
+ self._feature_setup_duration_ms = self._get_distribution(
238
259
  'feature_setup_duration_ms',
239
260
  description='Feature setup duration in milliseconds',
240
261
  parameters={
@@ -244,7 +265,7 @@ class MetricWriter(pg.Object, base.EventHandler):
244
265
  'error': str,
245
266
  }
246
267
  )
247
- self._feature_teardown_duration_ms = self._get_scalar(
268
+ self._feature_teardown_duration_ms = self._get_distribution(
248
269
  'feature_teardown_duration_ms',
249
270
  description='Feature teardown duration in milliseconds',
250
271
  parameters={
@@ -254,7 +275,7 @@ class MetricWriter(pg.Object, base.EventHandler):
254
275
  'error': str,
255
276
  }
256
277
  )
257
- self._feature_setup_session_duration_ms = self._get_scalar(
278
+ self._feature_setup_session_duration_ms = self._get_distribution(
258
279
  'feature_setup_session_duration_ms',
259
280
  description='Feature setup session duration in milliseconds',
260
281
  parameters={
@@ -264,7 +285,7 @@ class MetricWriter(pg.Object, base.EventHandler):
264
285
  'error': str,
265
286
  }
266
287
  )
267
- self._feature_teardown_session_duration_ms = self._get_scalar(
288
+ self._feature_teardown_session_duration_ms = self._get_distribution(
268
289
  'feature_teardown_session_duration_ms',
269
290
  description='Feature teardown session duration in milliseconds',
270
291
  parameters={
@@ -274,7 +295,7 @@ class MetricWriter(pg.Object, base.EventHandler):
274
295
  'error': str,
275
296
  }
276
297
  )
277
- self._feature_housekeep_duration_ms = self._get_scalar(
298
+ self._feature_housekeep_duration_ms = self._get_distribution(
278
299
  'feature_housekeep_duration_ms',
279
300
  description='Feature housekeeping duration in milliseconds',
280
301
  parameters={
@@ -289,7 +310,7 @@ class MetricWriter(pg.Object, base.EventHandler):
289
310
  # Session metrics.
290
311
  #
291
312
 
292
- self._session_start_duration_ms = self._get_scalar(
313
+ self._session_start_duration_ms = self._get_distribution(
293
314
  'session_start_duration_ms',
294
315
  description='Session start duration in milliseconds',
295
316
  parameters={
@@ -298,7 +319,7 @@ class MetricWriter(pg.Object, base.EventHandler):
298
319
  'error': str,
299
320
  }
300
321
  )
301
- self._session_end_duration_ms = self._get_scalar(
322
+ self._session_end_duration_ms = self._get_distribution(
302
323
  'session_end_duration_ms',
303
324
  description='Session end duration in milliseconds',
304
325
  parameters={
@@ -307,7 +328,7 @@ class MetricWriter(pg.Object, base.EventHandler):
307
328
  'error': str,
308
329
  }
309
330
  )
310
- self._session_lifetime_ms = self._get_scalar(
331
+ self._session_lifetime_ms = self._get_distribution(
311
332
  'session_lifetime_ms',
312
333
  description='Session lifetime in milliseconds',
313
334
  parameters={
@@ -373,6 +394,19 @@ class MetricWriter(pg.Object, base.EventHandler):
373
394
  environment_id=str(environment.id),
374
395
  status=old_status.value
375
396
  )
397
+ if old_status != base.Sandbox.Status.CREATED:
398
+ self._sandbox_count.increment(
399
+ delta=-1,
400
+ app=self.app,
401
+ environment_id=str(environment.id),
402
+ status=old_status.value
403
+ )
404
+ if new_status != base.Sandbox.Status.OFFLINE:
405
+ self._sandbox_count.increment(
406
+ app=self.app,
407
+ environment_id=str(environment.id),
408
+ status=new_status.value
409
+ )
376
410
 
377
411
  def on_sandbox_shutdown(
378
412
  self,
@@ -47,7 +47,7 @@ class MetricWriterTest(unittest.TestCase):
47
47
  writer._sandbox_start.value(
48
48
  app='test_app',
49
49
  environment_id='testing-env',
50
- error=''
50
+ error='Success'
51
51
  ),
52
52
  2
53
53
  )
@@ -55,7 +55,7 @@ class MetricWriterTest(unittest.TestCase):
55
55
  writer._sandbox_housekeep.value(
56
56
  app='test_app',
57
57
  environment_id='testing-env',
58
- error=''
58
+ error='Success'
59
59
  ),
60
60
  0,
61
61
  )
@@ -63,15 +63,32 @@ class MetricWriterTest(unittest.TestCase):
63
63
  writer._sandbox_shutdown.value(
64
64
  app='test_app',
65
65
  environment_id='testing-env',
66
- error=''
66
+ error='Success'
67
67
  ),
68
68
  2
69
69
  )
70
+ self.assertEqual(
71
+ writer._sandbox_count.value(
72
+ app='test_app',
73
+ environment_id='testing-env',
74
+ status='ready',
75
+ ),
76
+ 0
77
+ )
78
+ self.assertEqual(
79
+ writer._sandbox_count.value(
80
+ app='test_app',
81
+ environment_id='testing-env',
82
+ status='offline',
83
+ ),
84
+ 0
85
+ )
70
86
  self.assertEqual(
71
87
  writer._feature_setup.value(
72
88
  app='test_app',
73
89
  environment_id='testing-env',
74
- feature_name='test_feature1', error=''
90
+ feature_name='test_feature1',
91
+ error='Success'
75
92
  ),
76
93
  2,
77
94
  )
@@ -79,7 +96,8 @@ class MetricWriterTest(unittest.TestCase):
79
96
  writer._feature_setup.value(
80
97
  app='test_app',
81
98
  environment_id='testing-env',
82
- feature_name='test_feature2', error=''
99
+ feature_name='test_feature2',
100
+ error='Success'
83
101
  ),
84
102
  2,
85
103
  )
@@ -87,7 +105,8 @@ class MetricWriterTest(unittest.TestCase):
87
105
  writer._feature_setup_session.value(
88
106
  app='test_app',
89
107
  environment_id='testing-env',
90
- feature_name='test_feature1', error=''
108
+ feature_name='test_feature1',
109
+ error='Success'
91
110
  ),
92
111
  3,
93
112
  )
@@ -95,7 +114,8 @@ class MetricWriterTest(unittest.TestCase):
95
114
  writer._feature_setup_session.value(
96
115
  app='test_app',
97
116
  environment_id='testing-env',
98
- feature_name='test_feature2', error=''
117
+ feature_name='test_feature2',
118
+ error='Success'
99
119
  ),
100
120
  3,
101
121
  )
@@ -103,7 +123,8 @@ class MetricWriterTest(unittest.TestCase):
103
123
  writer._feature_teardown_session.value(
104
124
  app='test_app',
105
125
  environment_id='testing-env',
106
- feature_name='test_feature1', error=''
126
+ feature_name='test_feature1',
127
+ error='Success'
107
128
  ),
108
129
  2,
109
130
  )
@@ -111,7 +132,8 @@ class MetricWriterTest(unittest.TestCase):
111
132
  writer._feature_teardown_session.value(
112
133
  app='test_app',
113
134
  environment_id='testing-env',
114
- feature_name='test_feature2', error=''
135
+ feature_name='test_feature2',
136
+ error='Success'
115
137
  ),
116
138
  2,
117
139
  )
@@ -119,7 +141,8 @@ class MetricWriterTest(unittest.TestCase):
119
141
  writer._feature_teardown.value(
120
142
  app='test_app',
121
143
  environment_id='testing-env',
122
- feature_name='test_feature1', error=''
144
+ feature_name='test_feature1',
145
+ error='Success'
123
146
  ),
124
147
  2,
125
148
  )
@@ -127,7 +150,8 @@ class MetricWriterTest(unittest.TestCase):
127
150
  writer._feature_teardown.value(
128
151
  app='test_app',
129
152
  environment_id='testing-env',
130
- feature_name='test_feature2', error=''
153
+ feature_name='test_feature2',
154
+ error='Success'
131
155
  ),
132
156
  2,
133
157
  )
@@ -135,7 +159,8 @@ class MetricWriterTest(unittest.TestCase):
135
159
  writer._feature_housekeep.value(
136
160
  app='test_app',
137
161
  environment_id='testing-env',
138
- feature_name='test_feature1', error=''
162
+ feature_name='test_feature1',
163
+ error='Success'
139
164
  ),
140
165
  0,
141
166
  )
@@ -143,7 +168,8 @@ class MetricWriterTest(unittest.TestCase):
143
168
  writer._feature_housekeep.value(
144
169
  app='test_app',
145
170
  environment_id='testing-env',
146
- feature_name='test_feature2', error=''
171
+ feature_name='test_feature2',
172
+ error='Success'
147
173
  ),
148
174
  0,
149
175
  )
@@ -151,7 +177,8 @@ class MetricWriterTest(unittest.TestCase):
151
177
  writer._sandbox_activity.value(
152
178
  app='test_app',
153
179
  environment_id='testing-env',
154
- activity='shell', error=''
180
+ activity='shell',
181
+ error='Success'
155
182
  ),
156
183
  18
157
184
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langfun
3
- Version: 0.1.2.dev202510080805
3
+ Version: 0.1.2.dev202510100805
4
4
  Summary: Langfun: Language as Functions.
5
5
  Home-page: https://github.com/google/langfun
6
6
  Author: Langfun Authors