langfun 0.1.2.dev202503210804__tar.gz → 0.1.2.dev202503220803__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.
Files changed (160) hide show
  1. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/PKG-INFO +1 -1
  2. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/base.py +1 -0
  3. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/__init__.py +2 -0
  4. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/evaluation.py +2 -2
  5. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/experiment.py +5 -0
  6. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/experiment_test.py +4 -0
  7. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/reporting.py +2 -3
  8. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/reporting_test.py +5 -5
  9. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun.egg-info/PKG-INFO +1 -1
  10. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/LICENSE +0 -0
  11. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/README.md +0 -0
  12. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/__init__.py +0 -0
  13. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/__init__.py +0 -0
  14. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/agentic/__init__.py +0 -0
  15. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/agentic/action.py +0 -0
  16. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/agentic/action_eval.py +0 -0
  17. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/agentic/action_eval_test.py +0 -0
  18. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/agentic/action_test.py +0 -0
  19. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/coding/__init__.py +0 -0
  20. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/coding/python/__init__.py +0 -0
  21. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/coding/python/correction.py +0 -0
  22. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/coding/python/correction_test.py +0 -0
  23. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/coding/python/execution.py +0 -0
  24. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/coding/python/execution_test.py +0 -0
  25. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/coding/python/generation.py +0 -0
  26. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/coding/python/generation_test.py +0 -0
  27. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/coding/python/parsing.py +0 -0
  28. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/coding/python/parsing_test.py +0 -0
  29. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/coding/python/sandboxing.py +0 -0
  30. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/coding/python/sandboxing_test.py +0 -0
  31. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/component.py +0 -0
  32. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/component_test.py +0 -0
  33. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/concurrent.py +0 -0
  34. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/concurrent_test.py +0 -0
  35. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/console.py +0 -0
  36. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/console_test.py +0 -0
  37. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/__init__.py +0 -0
  38. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/base_test.py +0 -0
  39. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/matching.py +0 -0
  40. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/matching_test.py +0 -0
  41. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/patching.py +0 -0
  42. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/patching_test.py +0 -0
  43. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/scoring.py +0 -0
  44. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/scoring_test.py +0 -0
  45. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/checkpointing.py +0 -0
  46. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/checkpointing_test.py +0 -0
  47. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/eval_test_helper.py +0 -0
  48. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/evaluation_test.py +0 -0
  49. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/example.py +0 -0
  50. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/example_test.py +0 -0
  51. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/metric_values.py +0 -0
  52. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/metric_values_test.py +0 -0
  53. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/metrics.py +0 -0
  54. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/metrics_test.py +0 -0
  55. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/progress.py +0 -0
  56. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/progress_test.py +0 -0
  57. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/progress_tracking.py +0 -0
  58. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/progress_tracking_test.py +0 -0
  59. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/runners.py +0 -0
  60. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/eval/v2/runners_test.py +0 -0
  61. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/langfunc.py +0 -0
  62. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/langfunc_test.py +0 -0
  63. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/language_model.py +0 -0
  64. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/language_model_test.py +0 -0
  65. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/__init__.py +0 -0
  66. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/anthropic.py +0 -0
  67. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/anthropic_test.py +0 -0
  68. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/azure_openai.py +0 -0
  69. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/azure_openai_test.py +0 -0
  70. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/cache/__init__.py +0 -0
  71. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/cache/base.py +0 -0
  72. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/cache/in_memory.py +0 -0
  73. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/cache/in_memory_test.py +0 -0
  74. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/compositional.py +0 -0
  75. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/compositional_test.py +0 -0
  76. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/deepseek.py +0 -0
  77. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/deepseek_test.py +0 -0
  78. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/fake.py +0 -0
  79. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/fake_test.py +0 -0
  80. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/gemini.py +0 -0
  81. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/gemini_test.py +0 -0
  82. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/google_genai.py +0 -0
  83. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/google_genai_test.py +0 -0
  84. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/groq.py +0 -0
  85. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/groq_test.py +0 -0
  86. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/llama_cpp.py +0 -0
  87. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/llama_cpp_test.py +0 -0
  88. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/openai.py +0 -0
  89. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/openai_compatible.py +0 -0
  90. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/openai_compatible_test.py +0 -0
  91. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/openai_test.py +0 -0
  92. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/rest.py +0 -0
  93. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/rest_test.py +0 -0
  94. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/vertexai.py +0 -0
  95. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/llms/vertexai_test.py +0 -0
  96. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/logging.py +0 -0
  97. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/logging_test.py +0 -0
  98. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/memories/__init__.py +0 -0
  99. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/memories/conversation_history.py +0 -0
  100. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/memories/conversation_history_test.py +0 -0
  101. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/memory.py +0 -0
  102. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/message.py +0 -0
  103. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/message_test.py +0 -0
  104. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/modalities/__init__.py +0 -0
  105. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/modalities/audio.py +0 -0
  106. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/modalities/audio_test.py +0 -0
  107. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/modalities/image.py +0 -0
  108. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/modalities/image_test.py +0 -0
  109. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/modalities/mime.py +0 -0
  110. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/modalities/mime_test.py +0 -0
  111. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/modalities/pdf.py +0 -0
  112. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/modalities/pdf_test.py +0 -0
  113. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/modalities/video.py +0 -0
  114. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/modalities/video_test.py +0 -0
  115. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/modality.py +0 -0
  116. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/modality_test.py +0 -0
  117. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/natural_language.py +0 -0
  118. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/natural_language_test.py +0 -0
  119. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/sampling.py +0 -0
  120. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/sampling_test.py +0 -0
  121. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/structured/__init__.py +0 -0
  122. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/structured/completion.py +0 -0
  123. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/structured/completion_test.py +0 -0
  124. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/structured/description.py +0 -0
  125. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/structured/description_test.py +0 -0
  126. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/structured/function_generation.py +0 -0
  127. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/structured/function_generation_test.py +0 -0
  128. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/structured/mapping.py +0 -0
  129. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/structured/mapping_test.py +0 -0
  130. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/structured/parsing.py +0 -0
  131. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/structured/parsing_test.py +0 -0
  132. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/structured/querying.py +0 -0
  133. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/structured/querying_test.py +0 -0
  134. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/structured/schema.py +0 -0
  135. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/structured/schema_generation.py +0 -0
  136. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/structured/schema_generation_test.py +0 -0
  137. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/structured/schema_test.py +0 -0
  138. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/structured/scoring.py +0 -0
  139. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/structured/scoring_test.py +0 -0
  140. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/structured/tokenization.py +0 -0
  141. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/structured/tokenization_test.py +0 -0
  142. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/subscription.py +0 -0
  143. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/subscription_test.py +0 -0
  144. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/template.py +0 -0
  145. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/template_test.py +0 -0
  146. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/templates/__init__.py +0 -0
  147. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/templates/completion.py +0 -0
  148. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/templates/completion_test.py +0 -0
  149. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/templates/conversation.py +0 -0
  150. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/templates/conversation_test.py +0 -0
  151. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/templates/demonstration.py +0 -0
  152. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/templates/demonstration_test.py +0 -0
  153. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/templates/selfplay.py +0 -0
  154. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun/core/templates/selfplay_test.py +0 -0
  155. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun.egg-info/SOURCES.txt +0 -0
  156. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun.egg-info/dependency_links.txt +0 -0
  157. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun.egg-info/requires.txt +0 -0
  158. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/langfun.egg-info/top_level.txt +0 -0
  159. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/setup.cfg +0 -0
  160. {langfun-0.1.2.dev202503210804 → langfun-0.1.2.dev202503220803}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langfun
3
- Version: 0.1.2.dev202503210804
3
+ Version: 0.1.2.dev202503220803
4
4
  Summary: Langfun: Language as Functions.
5
5
  Home-page: https://github.com/google/langfun
6
6
  Author: Langfun Authors
@@ -77,6 +77,7 @@ class Evaluable(lf.Component):
77
77
 
78
78
  @classmethod
79
79
  def link(cls, path: str) -> str:
80
+ assert path.startswith('/'), path
80
81
  return f'file://{path}'
81
82
 
82
83
  @property
@@ -28,6 +28,8 @@ from langfun.core.eval.v2.metric_values import Average
28
28
  from langfun.core.eval.v2.metrics import Metric
29
29
  from langfun.core.eval.v2 import metrics
30
30
 
31
+ from langfun.core.eval.v2.experiment import Run
32
+ from langfun.core.eval.v2.experiment import RunId
31
33
  from langfun.core.eval.v2.experiment import Plugin
32
34
  from langfun.core.eval.v2.experiment import Runner
33
35
  from langfun.core.eval.v2 import runners
@@ -425,7 +425,7 @@ class Evaluation(experiment_lib.Experiment):
425
425
  [
426
426
  pg.views.html.controls.Label(
427
427
  'Summary',
428
- link=run.experiment.output_link(run, 'summary.html'),
428
+ link=run.output_link('summary.html'),
429
429
  css_classes=['summary-link'],
430
430
  ),
431
431
  '|',
@@ -571,7 +571,7 @@ class Evaluation(experiment_lib.Experiment):
571
571
  pg.Html.element(
572
572
  'iframe', [],
573
573
  name='example-view',
574
- src='./1.html',
574
+ src='about:blank',
575
575
  title='Example view.',
576
576
  css_classes=['example-view'],
577
577
  ),
@@ -276,6 +276,7 @@ class Experiment(lf.Component, pg.views.HtmlTreeView.Extension):
276
276
 
277
277
  @classmethod
278
278
  def link(cls, path: str) -> str:
279
+ assert path.startswith('/'), path
279
280
  return f'file://{path}'
280
281
 
281
282
  #
@@ -887,6 +888,10 @@ class Run(pg.Object, pg.views.html.HtmlTreeView.Extension):
887
888
  return os.path.join(self.output_root, experiment.id.replace('@', '/'))
888
889
  return self.output_root
889
890
 
891
+ def output_link(self, relative_path: str):
892
+ """Returns the output link for the relative path."""
893
+ return Experiment.link(os.path.join(self.output_root, relative_path))
894
+
890
895
  def input_dir(self, experiment: Experiment) -> str:
891
896
  """Returns the input directory of the experiment."""
892
897
  if experiment.is_leaf:
@@ -218,6 +218,10 @@ class RunTest(unittest.TestCase):
218
218
  )
219
219
  self.assertEqual(run.output_root, '/root/run_20241102_0')
220
220
  self.assertEqual(run.input_root, '/root/run_20241102_0')
221
+ self.assertEqual(
222
+ run.output_link('summary.html'),
223
+ 'file:///root/run_20241102_0/summary.html'
224
+ )
221
225
  self.assertEqual(
222
226
  run.output_dir(run.experiment.leaf_nodes[0]),
223
227
  (
@@ -13,6 +13,7 @@
13
13
  # limitations under the License.
14
14
  """Reporting evaluation results."""
15
15
 
16
+ import os
16
17
  import threading
17
18
  import time
18
19
  import traceback
@@ -145,9 +146,7 @@ class HtmlReporter(experiment_lib.Plugin):
145
146
  )
146
147
  )
147
148
  with self._summary_lock:
148
- html.save(
149
- run.output_path_for(run.experiment, _SUMMARY_FILE)
150
- )
149
+ html.save(os.path.join(run.output_root, _SUMMARY_FILE))
151
150
 
152
151
  if force or (time.time() - self._last_summary_time > self.summary_interval):
153
152
  self._last_summary_time = time.time()
@@ -31,7 +31,7 @@ class ReportingTest(unittest.TestCase):
31
31
  reporter = reporting.HtmlReporter()
32
32
  run = experiment.run(root_dir, 'new', plugins=[checkpointer, reporter])
33
33
  self.assertTrue(
34
- pg.io.path_exists(run.output_path_for(experiment, 'summary.html'))
34
+ pg.io.path_exists(os.path.join(run.output_root, 'summary.html'))
35
35
  )
36
36
  for leaf in experiment.leaf_nodes:
37
37
  self.assertTrue(
@@ -56,7 +56,7 @@ class ReportingTest(unittest.TestCase):
56
56
  warm_start_from=run.output_root
57
57
  )
58
58
  self.assertTrue(
59
- pg.io.path_exists(run.output_path_for(experiment, 'summary.html'))
59
+ pg.io.path_exists(os.path.join(run.output_root, 'summary.html'))
60
60
  )
61
61
  for leaf in experiment.leaf_nodes:
62
62
  self.assertTrue(
@@ -83,7 +83,7 @@ class ReportingTest(unittest.TestCase):
83
83
  reporter = reporting.HtmlReporter()
84
84
  run = experiment.run(root_dir, 'new', plugins=[reporter])
85
85
  self.assertFalse(
86
- pg.io.path_exists(run.output_path_for(experiment, 'summary.html'))
86
+ pg.io.path_exists(os.path.join(run.output_root, 'summary.html'))
87
87
  )
88
88
  for leaf in experiment.leaf_nodes:
89
89
  self.assertFalse(
@@ -107,7 +107,7 @@ class ReportingTest(unittest.TestCase):
107
107
  reporter = reporting.HtmlReporter()
108
108
  run = experiment.run(root_dir, 'new', plugins=[checkpointer, reporter])
109
109
  self.assertTrue(
110
- pg.io.path_exists(run.output_path_for(experiment, 'summary.html'))
110
+ pg.io.path_exists(os.path.join(run.output_root, 'summary.html'))
111
111
  )
112
112
  for leaf in experiment.leaf_nodes:
113
113
  self.assertTrue(
@@ -136,7 +136,7 @@ class ReportingTest(unittest.TestCase):
136
136
  warm_start_from=run.output_root
137
137
  )
138
138
  self.assertTrue(
139
- pg.io.path_exists(run.output_path_for(experiment, 'summary.html'))
139
+ pg.io.path_exists(os.path.join(run.output_root, 'summary.html'))
140
140
  )
141
141
  for leaf in experiment.leaf_nodes:
142
142
  self.assertTrue(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langfun
3
- Version: 0.1.2.dev202503210804
3
+ Version: 0.1.2.dev202503220803
4
4
  Summary: Langfun: Language as Functions.
5
5
  Home-page: https://github.com/google/langfun
6
6
  Author: Langfun Authors