langfun 0.1.2.dev202504240804__tar.gz → 0.1.2.dev202504250804__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 (168) hide show
  1. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/PKG-INFO +1 -1
  2. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/agentic/action.py +7 -0
  3. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/agentic/action_test.py +3 -1
  4. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/evaluation.py +36 -0
  5. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/runners.py +5 -4
  6. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/rest.py +3 -0
  7. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/message.py +5 -2
  8. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/message_test.py +9 -0
  9. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/structured/schema_test.py +0 -1
  10. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/template_test.py +3 -3
  11. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun.egg-info/PKG-INFO +1 -1
  12. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/LICENSE +0 -0
  13. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/README.md +0 -0
  14. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/__init__.py +0 -0
  15. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/__init__.py +0 -0
  16. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/agentic/__init__.py +0 -0
  17. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/agentic/action_eval.py +0 -0
  18. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/agentic/action_eval_test.py +0 -0
  19. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/coding/__init__.py +0 -0
  20. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/coding/python/__init__.py +0 -0
  21. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/coding/python/correction.py +0 -0
  22. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/coding/python/correction_test.py +0 -0
  23. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/coding/python/execution.py +0 -0
  24. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/coding/python/execution_test.py +0 -0
  25. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/coding/python/generation.py +0 -0
  26. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/coding/python/generation_test.py +0 -0
  27. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/coding/python/parsing.py +0 -0
  28. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/coding/python/parsing_test.py +0 -0
  29. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/coding/python/sandboxing.py +0 -0
  30. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/coding/python/sandboxing_test.py +0 -0
  31. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/component.py +0 -0
  32. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/component_test.py +0 -0
  33. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/concurrent.py +0 -0
  34. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/concurrent_test.py +0 -0
  35. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/console.py +0 -0
  36. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/console_test.py +0 -0
  37. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/data/__init__.py +0 -0
  38. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/data/conversion/__init__.py +0 -0
  39. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/data/conversion/anthropic.py +0 -0
  40. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/data/conversion/anthropic_test.py +0 -0
  41. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/data/conversion/gemini.py +0 -0
  42. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/data/conversion/gemini_test.py +0 -0
  43. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/data/conversion/openai.py +0 -0
  44. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/data/conversion/openai_test.py +0 -0
  45. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/__init__.py +0 -0
  46. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/base.py +0 -0
  47. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/base_test.py +0 -0
  48. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/matching.py +0 -0
  49. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/matching_test.py +0 -0
  50. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/patching.py +0 -0
  51. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/patching_test.py +0 -0
  52. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/scoring.py +0 -0
  53. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/scoring_test.py +0 -0
  54. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/__init__.py +0 -0
  55. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/checkpointing.py +0 -0
  56. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/checkpointing_test.py +0 -0
  57. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/eval_test_helper.py +0 -0
  58. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/evaluation_test.py +0 -0
  59. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/example.py +0 -0
  60. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/example_test.py +0 -0
  61. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/experiment.py +0 -0
  62. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/experiment_test.py +0 -0
  63. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/metric_values.py +0 -0
  64. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/metric_values_test.py +0 -0
  65. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/metrics.py +0 -0
  66. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/metrics_test.py +0 -0
  67. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/progress.py +0 -0
  68. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/progress_test.py +0 -0
  69. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/progress_tracking.py +0 -0
  70. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/progress_tracking_test.py +0 -0
  71. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/reporting.py +0 -0
  72. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/reporting_test.py +0 -0
  73. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/eval/v2/runners_test.py +0 -0
  74. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/langfunc.py +0 -0
  75. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/langfunc_test.py +0 -0
  76. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/language_model.py +0 -0
  77. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/language_model_test.py +0 -0
  78. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/__init__.py +0 -0
  79. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/anthropic.py +0 -0
  80. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/anthropic_test.py +0 -0
  81. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/azure_openai.py +0 -0
  82. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/azure_openai_test.py +0 -0
  83. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/cache/__init__.py +0 -0
  84. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/cache/base.py +0 -0
  85. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/cache/in_memory.py +0 -0
  86. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/cache/in_memory_test.py +0 -0
  87. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/compositional.py +0 -0
  88. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/compositional_test.py +0 -0
  89. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/deepseek.py +0 -0
  90. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/deepseek_test.py +0 -0
  91. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/fake.py +0 -0
  92. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/fake_test.py +0 -0
  93. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/gemini.py +0 -0
  94. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/gemini_test.py +0 -0
  95. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/google_genai.py +0 -0
  96. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/google_genai_test.py +0 -0
  97. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/groq.py +0 -0
  98. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/groq_test.py +0 -0
  99. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/llama_cpp.py +0 -0
  100. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/llama_cpp_test.py +0 -0
  101. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/openai.py +0 -0
  102. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/openai_compatible.py +0 -0
  103. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/openai_compatible_test.py +0 -0
  104. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/openai_test.py +0 -0
  105. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/rest_test.py +0 -0
  106. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/vertexai.py +0 -0
  107. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/llms/vertexai_test.py +0 -0
  108. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/logging.py +0 -0
  109. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/logging_test.py +0 -0
  110. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/memories/__init__.py +0 -0
  111. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/memories/conversation_history.py +0 -0
  112. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/memories/conversation_history_test.py +0 -0
  113. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/memory.py +0 -0
  114. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/modalities/__init__.py +0 -0
  115. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/modalities/audio.py +0 -0
  116. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/modalities/audio_test.py +0 -0
  117. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/modalities/image.py +0 -0
  118. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/modalities/image_test.py +0 -0
  119. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/modalities/mime.py +0 -0
  120. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/modalities/mime_test.py +0 -0
  121. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/modalities/pdf.py +0 -0
  122. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/modalities/pdf_test.py +0 -0
  123. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/modalities/video.py +0 -0
  124. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/modalities/video_test.py +0 -0
  125. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/modality.py +0 -0
  126. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/modality_test.py +0 -0
  127. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/natural_language.py +0 -0
  128. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/natural_language_test.py +0 -0
  129. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/sampling.py +0 -0
  130. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/sampling_test.py +0 -0
  131. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/structured/__init__.py +0 -0
  132. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/structured/completion.py +0 -0
  133. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/structured/completion_test.py +0 -0
  134. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/structured/description.py +0 -0
  135. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/structured/description_test.py +0 -0
  136. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/structured/function_generation.py +0 -0
  137. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/structured/function_generation_test.py +0 -0
  138. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/structured/mapping.py +0 -0
  139. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/structured/mapping_test.py +0 -0
  140. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/structured/parsing.py +0 -0
  141. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/structured/parsing_test.py +0 -0
  142. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/structured/querying.py +0 -0
  143. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/structured/querying_test.py +0 -0
  144. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/structured/schema.py +0 -0
  145. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/structured/schema_generation.py +0 -0
  146. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/structured/schema_generation_test.py +0 -0
  147. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/structured/scoring.py +0 -0
  148. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/structured/scoring_test.py +0 -0
  149. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/structured/tokenization.py +0 -0
  150. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/structured/tokenization_test.py +0 -0
  151. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/subscription.py +0 -0
  152. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/subscription_test.py +0 -0
  153. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/template.py +0 -0
  154. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/templates/__init__.py +0 -0
  155. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/templates/completion.py +0 -0
  156. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/templates/completion_test.py +0 -0
  157. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/templates/conversation.py +0 -0
  158. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/templates/conversation_test.py +0 -0
  159. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/templates/demonstration.py +0 -0
  160. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/templates/demonstration_test.py +0 -0
  161. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/templates/selfplay.py +0 -0
  162. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun/core/templates/selfplay_test.py +0 -0
  163. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun.egg-info/SOURCES.txt +0 -0
  164. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun.egg-info/dependency_links.txt +0 -0
  165. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun.egg-info/requires.txt +0 -0
  166. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/langfun.egg-info/top_level.txt +0 -0
  167. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/setup.cfg +0 -0
  168. {langfun-0.1.2.dev202504240804 → langfun-0.1.2.dev202504250804}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langfun
3
- Version: 0.1.2.dev202504240804
3
+ Version: 0.1.2.dev202504250804
4
4
  Summary: Langfun: Language as Functions.
5
5
  Home-page: https://github.com/google/langfun
6
6
  Author: Langfun Authors
@@ -20,6 +20,7 @@ import threading
20
20
  import time
21
21
  import typing
22
22
  from typing import Annotated, Any, Callable, Iterable, Iterator, Optional, Type, Union
23
+ import uuid
23
24
  import langfun.core as lf
24
25
  from langfun.core import structured as lf_structured
25
26
  import pyglove as pg
@@ -63,7 +64,11 @@ class Action(pg.Object):
63
64
  lf.console.display(pg.view(session, name='agent_session'))
64
65
 
65
66
  with session.track_action(self):
67
+ pg.logging.info('Example %s starts action %s', session.id, repr(self))
66
68
  result = self.call(session=session, **kwargs)
69
+ pg.logging.info(
70
+ 'Example %s ends action %s', session.id, self.__class__.__name__
71
+ )
67
72
 
68
73
  # For the top-level action, we store the session in the metadata.
69
74
  if new_session:
@@ -792,6 +797,8 @@ class Session(pg.Object, pg.views.html.HtmlTreeView.Extension):
792
797
  self._tls = threading.local()
793
798
  self._current_action = self.root
794
799
  self._current_execution = self.root.execution
800
+ if self.id is None:
801
+ self.rebind(id=uuid.uuid4().hex[-7:], skip_notification=True)
795
802
 
796
803
  #
797
804
  # Context-manager for information tracking.
@@ -68,6 +68,7 @@ class SessionTest(unittest.TestCase):
68
68
  self.assertEqual(foo(lm=lm), 3)
69
69
 
70
70
  session = foo.session
71
+ self.assertEqual(len(session.id), 7)
71
72
  self.assertIsNotNone(session)
72
73
  self.assertIsInstance(session.root.action, action_lib.RootAction)
73
74
  self.assertIs(session.current_action, session.root)
@@ -152,7 +153,8 @@ class SessionTest(unittest.TestCase):
152
153
  session.fatal('hi', x=1, y=2)
153
154
 
154
155
  def test_as_message(self):
155
- session = action_lib.Session()
156
+ session = action_lib.Session(id='abc')
157
+ self.assertEqual(session.id, 'abc')
156
158
  self.assertIsInstance(session.as_message(), lf.AIMessage)
157
159
 
158
160
 
@@ -169,9 +169,23 @@ class Evaluation(experiment_lib.Experiment):
169
169
  checkpointed = self._state.ckpt_example(example.id)
170
170
  with pg.timeit('evaluate') as timeit, lf.track_usages() as usage_summary:
171
171
  if checkpointed is None or checkpointed.has_error:
172
+ if checkpointed is None:
173
+ self.info(
174
+ f'Example {example.id} is being processed for the first time '
175
+ 'as no prior run is found. '
176
+ )
177
+ else:
178
+ self.info(
179
+ f'Example {example.id} is being reprocessed as prior run '
180
+ f'contains error: {checkpointed.error}'
181
+ )
172
182
  example.start_time = time.time()
173
183
  self._process(example, raise_if_has_error=raise_if_has_error)
174
184
  else:
185
+ self.info(
186
+ f'Example {example.id} skipped processing as prior run '
187
+ 'is available and error free.'
188
+ )
175
189
  example.start_time = checkpointed.start_time
176
190
 
177
191
  # Use the output and metadata obtained from the previous processing.
@@ -190,10 +204,12 @@ class Evaluation(experiment_lib.Experiment):
190
204
  # NOTE(daiyip): It's possible that metrics could use LLMs, so we need to
191
205
  # track the usage of the metrics separately.
192
206
  with pg.timeit('metric'):
207
+ self.info(f'Starting metric computation for example {example.id}.')
193
208
  metric_metadata = {}
194
209
  for metric in self.metrics:
195
210
  metric_metadata.update(metric.audit(example))
196
211
  example.metric_metadata = metric_metadata
212
+ self.info(f'Completed metric computation for example {example.id}.')
197
213
 
198
214
  # For previously processed examples, we keep the execution status for the
199
215
  # processing step.
@@ -315,6 +331,26 @@ class Evaluation(experiment_lib.Experiment):
315
331
  with self._log_lock:
316
332
  self._log_entries.append(log_entry)
317
333
 
334
+ # Also add system log.
335
+ match level:
336
+ case 'debug':
337
+ sys_log_func = pg.logging.debug
338
+ case 'info':
339
+ sys_log_func = pg.logging.info
340
+ case 'warning':
341
+ sys_log_func = pg.logging.warning
342
+ case 'error':
343
+ sys_log_func = pg.logging.error
344
+ case 'fatal':
345
+ sys_log_func = pg.logging.error
346
+ case _:
347
+ raise ValueError(f'Unsupported log level: {level}')
348
+
349
+ sys_log_func(
350
+ '%s: %s\nMetadata: %s',
351
+ self.id, message, pg.format(kwargs)
352
+ )
353
+
318
354
  def debug(self, message: str, **kwargs):
319
355
  """Logs a debug message to the session."""
320
356
  self._log(pg.logging.debug, 'debug', message, **kwargs)
@@ -249,22 +249,23 @@ class RunnerBase(Runner):
249
249
  if example.error is None:
250
250
  experiment.progress.increment_processed()
251
251
  experiment.info(
252
- f'Example {example.id} is successfully evaluated in '
253
- f'{example.elapse:.2f} seconds.' # pylint: disable=bad-whitespace
252
+ f'Example {example.id} is successfully evaluated (with process) in '
253
+ f'{example.elapse:.2f} seconds.'
254
254
  )
255
255
  else:
256
256
  experiment.progress.increment_failed()
257
257
  experiment.error(
258
258
  (
259
259
  f'Failed to evaluate example {example.id} in'
260
- f'{example.elapse:.2f} seconds.' # pylint: disable=bad-whitespace
260
+ f'{example.elapse:.2f} seconds.'
261
261
  ),
262
262
  error=example.error
263
263
  )
264
264
  else:
265
265
  experiment.progress.increment_skipped()
266
266
  experiment.info(
267
- f'Skipped example {example.id} as it is loaded from checkpoint.'
267
+ f'Example {example.id} is successfully evaluated (without reprocess) '
268
+ f'in {example.elapse:.2f} seconds.'
268
269
  )
269
270
 
270
271
  experiment.usage_summary.merge(example.usage_summary)
@@ -103,6 +103,8 @@ class REST(lf.LanguageModel):
103
103
  error_message = str(e)
104
104
  if 'REJECTED_CLIENT_THROTTLED' in error_message:
105
105
  raise lf.TemporaryLMError(error_message) from e
106
+ if 'UNREACHABLE_ERROR' in error_message:
107
+ raise lf.TemporaryLMError(error_message) from e
106
108
  raise lf.LMError(error_message) from e
107
109
 
108
110
  def _error(self, status_code: int, content: str) -> lf.LMError:
@@ -113,6 +115,7 @@ class REST(lf.LanguageModel):
113
115
  502, # Bad gateway (upstream issue, might retry).
114
116
  503, # Servers currently under load, retry after a brief wait.
115
117
  529, # Overloaded, retry after a brief wait.
118
+ 499, # Client Closed Request
116
119
  ):
117
120
  error_cls = lf.TemporaryLMError
118
121
  else:
@@ -443,11 +443,14 @@ class Message(
443
443
  metadata = dict()
444
444
  last_char = None
445
445
  for i, chunk in enumerate(chunks):
446
- if i > 0 and last_char not in ('\t', ' ', '\n'):
446
+ if i > 0 and last_char not in ('\t', ' ', '\n', None):
447
447
  fused_text.write(separator)
448
448
  if isinstance(chunk, str):
449
449
  fused_text.write(chunk)
450
- last_char = chunk[-1]
450
+ if chunk:
451
+ last_char = chunk[-1]
452
+ else:
453
+ last_char = None
451
454
  else:
452
455
  assert isinstance(chunk, modality.Modality), chunk
453
456
  var_name = f'obj{ref_index}'
@@ -476,6 +476,15 @@ class MessageTest(unittest.TestCase):
476
476
  """
477
477
  )
478
478
 
479
+ def test_from_chunks_with_empty_str(self):
480
+ chunks = ['Hello', '', 'World']
481
+ msg = message.AIMessage.from_chunks(chunks)
482
+ self.assertEqual(msg.text, 'Hello World')
483
+
484
+ chunks = ['', 'hello']
485
+ msg = message.AIMessage.from_chunks(chunks)
486
+ self.assertEqual(msg.text, 'hello')
487
+
479
488
 
480
489
  class MessageConverterTest(unittest.TestCase):
481
490
 
@@ -71,7 +71,6 @@ class SchemaTest(unittest.TestCase):
71
71
  self.assert_schema(float, pg.typing.Float())
72
72
  self.assert_schema(str, pg.typing.Str())
73
73
  self.assert_schema(bool, pg.typing.Bool())
74
- self.assert_schema(bool | None, pg.typing.Bool().noneable())
75
74
 
76
75
  # Top-level dictionary with 'result' as the only key is flattened.
77
76
  self.assert_schema(dict(result=int), pg.typing.Int())
@@ -80,10 +80,10 @@ class BasicTest(unittest.TestCase):
80
80
 
81
81
  def test_custom_typing(self):
82
82
  class Foo(component.Component):
83
- x: str | None
84
- y: int | None
83
+ x: str | None = None
84
+ y: int | None = None
85
85
  z: str
86
- p: component.Component | None
86
+ p: component.Component | None = None
87
87
 
88
88
  d = Foo(z='bar')
89
89
  # String template can be assigned to str.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langfun
3
- Version: 0.1.2.dev202504240804
3
+ Version: 0.1.2.dev202504250804
4
4
  Summary: Langfun: Language as Functions.
5
5
  Home-page: https://github.com/google/langfun
6
6
  Author: Langfun Authors