langfun 0.1.2.dev202410170804__py3-none-any.whl → 0.1.2.dev202410190803__py3-none-any.whl

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.
@@ -92,14 +92,16 @@ class CustomMimeTest(unittest.TestCase):
92
92
  enable_key_tooltip=False,
93
93
  ),
94
94
  """
95
- <details open class="pyglove custom"><summary><div class="summary_title">Custom(...)</div></summary><embed type="text/plain" src="data:text/plain;base64,Zm9v"/></details>
95
+ <details open class="pyglove custom"><summary><div class="summary-title">Custom(...)</div></summary><embed type="text/plain" src="data:text/plain;base64,Zm9v"/></details>
96
96
  """
97
97
  )
98
98
  self.assert_html_content(
99
99
  mime.Custom('text/plain', b'foo').to_html(
100
100
  enable_summary_tooltip=False,
101
101
  enable_key_tooltip=False,
102
- raw_mime_content=True,
102
+ extra_flags=dict(
103
+ raw_mime_content=True,
104
+ )
103
105
  ),
104
106
  """
105
107
  <embed type="text/plain" src="data:text/plain;base64,Zm9v"/>
@@ -109,10 +111,12 @@ class CustomMimeTest(unittest.TestCase):
109
111
  mime.Custom('text/plain', b'foo').to_html(
110
112
  enable_summary_tooltip=False,
111
113
  enable_key_tooltip=False,
112
- display_modality_when_hover=True,
114
+ extra_flags=dict(
115
+ display_modality_when_hover=True,
116
+ )
113
117
  ),
114
118
  """
115
- <details open class="pyglove custom"><summary><div class="summary_title">Custom(...)</div><span class="tooltip custom"><embed type="text/plain" src="data:text/plain;base64,Zm9v"/></span></summary><embed type="text/plain" src="data:text/plain;base64,Zm9v"/></details>
119
+ <details open class="pyglove custom"><summary><div class="summary-title">Custom(...)</div><span class="tooltip"><embed type="text/plain" src="data:text/plain;base64,Zm9v"/></span></summary><embed type="text/plain" src="data:text/plain;base64,Zm9v"/></details>
116
120
  """
117
121
  )
118
122
 
@@ -13,6 +13,7 @@
13
13
  # limitations under the License.
14
14
  """The base of symbolic mapping methods."""
15
15
 
16
+ import functools
16
17
  import io
17
18
  from typing import Annotated, Any, Callable
18
19
  import langfun.core as lf
@@ -183,43 +184,59 @@ class MappingExample(lf.NaturalLanguageFormattable, lf.Component):
183
184
  result.write(lf.colored(str(self.metadata), color='cyan'))
184
185
  return result.getvalue().strip()
185
186
 
186
- def _html_tree_view_content(
187
- self,
188
- *,
189
- parent: Any,
190
- view: pg.views.HtmlTreeView,
191
- root_path: pg.KeyPath,
192
- **kwargs,
193
- ):
194
- def render_value(value, **kwargs):
187
+ @classmethod
188
+ @functools.cache
189
+ def _html_tree_view_config(cls) -> dict[str, Any]:
190
+
191
+ def render_value(view, *, value, **kwargs):
195
192
  if isinstance(value, lf.Template):
196
193
  # Make a shallow copy to make sure modalities are rooted by
197
194
  # the input.
198
195
  value = value.clone().render()
196
+ if value is None:
197
+ return None
199
198
  return view.render(value, **kwargs)
200
199
 
201
- exclude_keys = []
202
- if not self.context:
203
- exclude_keys.append('context')
204
- if not self.schema:
205
- exclude_keys.append('schema')
206
- if not self.metadata:
207
- exclude_keys.append('metadata')
208
-
209
- kwargs.pop('special_keys', None)
210
- kwargs.pop('exclude_keys', None)
211
- return view.complex_value(
212
- self.sym_init_args,
213
- parent=self,
214
- root_path=root_path,
215
- render_value_fn=render_value,
216
- special_keys=['input', 'output', 'context', 'schema', 'metadata'],
217
- exclude_keys=exclude_keys,
218
- **kwargs
200
+ return pg.views.HtmlTreeView.get_kwargs(
201
+ super()._html_tree_view_config(),
202
+ dict(
203
+ include_keys=['input', 'output', 'context', 'schema', 'metadata'],
204
+ extra_flags=dict(
205
+ render_value_fn=render_value,
206
+ ),
207
+ child_config=dict(
208
+ input=dict(
209
+ collapse_level=1,
210
+ ),
211
+ output=dict(
212
+ css_classes=['lf-example-output'],
213
+ collapse_level=1,
214
+ ),
215
+ schema=dict(
216
+ css_classes=['lf-example-schema'],
217
+ collapse_level=1,
218
+ ),
219
+ metadata=dict(
220
+ css_classes=['lf-example-metadata'],
221
+ collapse_level=1,
222
+ ),
223
+ ),
224
+ )
219
225
  )
220
226
 
221
- def _html_tree_view_uncollapse_level(self) -> int:
222
- return 2
227
+ @classmethod
228
+ @functools.cache
229
+ def _html_tree_view_css_styles(cls) -> list[str]:
230
+ return super()._html_tree_view_css_styles() + [
231
+ """
232
+ .lf-example-output {
233
+ color: dodgerblue;
234
+ }
235
+ .lf-example-schema {
236
+ color: blue;
237
+ }
238
+ """
239
+ ]
223
240
 
224
241
 
225
242
  class Mapping(lf.LangFunc):
@@ -194,15 +194,18 @@ class MappingExampleTest(unittest.TestCase):
194
194
  )
195
195
  self.assert_html_content(
196
196
  example.to_html(
197
- enable_summary_tooltip=False, include_message_metadata=False
197
+ enable_summary_tooltip=False,
198
+ extra_flags=dict(
199
+ include_message_metadata=False
200
+ )
198
201
  ),
199
202
  """
200
- <details open class="pyglove mapping-example"><summary><div class="summary_title">MappingExample(...)</div></summary><div class="complex_value mapping-example"><div class="special_value"><details open class="pyglove user-message lf-message"><summary><div class="summary_name">input</div><div class="summary_title">UserMessage(...)</div></summary><div class="complex_value"><div class="message-tags"><span>rendered</span></div><div class="message-text">1 + 2 = ?</div></div></details></div><div class="special_value"><details open class="pyglove answer"><summary><div class="summary_name">output</div><div class="summary_title">Answer(...)</div></summary><div class="complex_value answer"><table><tr><td><span class="object_key str">answer</span><span class="tooltip key-path">output.answer</span></td><td><div><span class="simple_value int">3</span></div></td></tr></table></div></details></div><div class="special_value"><details open class="pyglove str"><summary><div class="summary_name">context</div><div class="summary_title">&#x27;compute 1 + 1&#x27;</div></summary><span class="simple_value str">&#x27;compute 1 + 1&#x27;</span></details></div><div class="special_value"><details open class="pyglove schema"><summary><div class="summary_name">schema</div><div class="summary_title">Schema(...)</div></summary><div class="lf-schema-definition">Answer
203
+ <details open class="pyglove mapping-example"><summary><div class="summary-title">MappingExample(...)</div></summary><div class="complex-value mapping-example"><details open class="pyglove user-message lf-message"><summary><div class="summary-name lf-message">input<span class="tooltip lf-message">input</span></div><div class="summary-title lf-message">UserMessage(...)</div></summary><div class="complex_value"><div class="message-tags"><span>rendered</span></div><div class="message-text">1 + 2 = ?</div></div></details><details open class="pyglove answer lf-example-output"><summary><div class="summary-name lf-example-output">output<span class="tooltip lf-example-output">output</span></div><div class="summary-title lf-example-output">Answer(...)</div></summary><div class="complex-value answer"><details open class="pyglove int"><summary><div class="summary-name">answer<span class="tooltip">output.answer</span></div><div class="summary-title">int</div></summary><span class="simple-value int">3</span></details></div></details><details open class="pyglove str"><summary><div class="summary-name">context<span class="tooltip">context</span></div><div class="summary-title">str</div></summary><span class="simple-value str">&#x27;compute 1 + 1&#x27;</span></details><details open class="pyglove schema lf-example-schema"><summary><div class="summary-name lf-example-schema">schema<span class="tooltip lf-example-schema">schema</span></div><div class="summary-title lf-example-schema">Schema(...)</div></summary><div class="lf-schema-definition">Answer
201
204
 
202
205
  ```python
203
206
  class Answer:
204
207
  answer: int
205
- ```</div></details></div><div class="special_value"><details open class="pyglove dict"><summary><div class="summary_name">metadata</div><div class="summary_title">Dict(...)</div></summary><div class="complex_value dict"><table><tr><td><span class="object_key str">foo</span><span class="tooltip key-path">metadata.foo</span></td><td><div><span class="simple_value str">&#x27;bar&#x27;</span></div></td></tr></table></div></details></div></div></details>
208
+ ```</div></details><details open class="pyglove dict lf-example-metadata"><summary><div class="summary-name lf-example-metadata">metadata<span class="tooltip lf-example-metadata">metadata</span></div><div class="summary-title lf-example-metadata">Dict(...)</div></summary><div class="complex-value dict"><details open class="pyglove str"><summary><div class="summary-name">foo<span class="tooltip">metadata.foo</span></div><div class="summary-title">str</div></summary><span class="simple-value str">&#x27;bar&#x27;</span></details></div></details></div></details>
206
209
  """
207
210
  )
208
211
 
@@ -212,10 +215,13 @@ class MappingExampleTest(unittest.TestCase):
212
215
  )
213
216
  self.assert_html_content(
214
217
  example.to_html(
215
- enable_summary_tooltip=False, include_message_metadata=False
218
+ enable_summary_tooltip=False,
219
+ extra_flags=dict(
220
+ include_message_metadata=False
221
+ )
216
222
  ),
217
223
  """
218
- <details open class="pyglove mapping-example"><summary><div class="summary_title">MappingExample(...)</div></summary><div class="complex_value mapping-example"><div class="special_value"><details open class="pyglove user-message lf-message"><summary><div class="summary_name">input</div><div class="summary_title">UserMessage(...)</div></summary><div class="complex_value"><div class="message-tags"><span>rendered</span></div><div class="message-text">1 + 2 = ?</div></div></details></div><div class="special_value"><details open class="pyglove answer"><summary><div class="summary_name">output</div><div class="summary_title">Answer(...)</div></summary><div class="complex_value answer"><table><tr><td><span class="object_key str">answer</span><span class="tooltip key-path">output.answer</span></td><td><div><span class="simple_value int">3</span></div></td></tr></table></div></details></div></div></details>
224
+ <details open class="pyglove mapping-example"><summary><div class="summary-title">MappingExample(...)</div></summary><div class="complex-value mapping-example"><details open class="pyglove user-message lf-message"><summary><div class="summary-name lf-message">input<span class="tooltip lf-message">input</span></div><div class="summary-title lf-message">UserMessage(...)</div></summary><div class="complex_value"><div class="message-tags"><span>rendered</span></div><div class="message-text">1 + 2 = ?</div></div></details><details open class="pyglove answer lf-example-output"><summary><div class="summary-name lf-example-output">output<span class="tooltip lf-example-output">output</span></div><div class="summary-title lf-example-output">Answer(...)</div></summary><div class="complex-value answer"><details open class="pyglove int"><summary><div class="summary-name">answer<span class="tooltip">output.answer</span></div><div class="summary-title">int</div></summary><span class="simple-value int">3</span></details></div></details><details open class="pyglove contextual-attribute lf-example-schema"><summary><div class="summary-name lf-example-schema">schema<span class="tooltip lf-example-schema">schema</span></div><div class="summary-title lf-example-schema">ContextualAttribute(...)</div></summary><span class="simple-value none-type">None</span></details><details open class="pyglove dict lf-example-metadata"><summary><div class="summary-name lf-example-metadata">metadata<span class="tooltip lf-example-metadata">metadata</span></div><div class="summary-title lf-example-metadata">Dict(...)</div></summary><div class="complex-value dict"><span class="empty-container"></span></div></details></div></details>
219
225
  """
220
226
  )
221
227
 
@@ -199,7 +199,7 @@ class Schema(lf.NaturalLanguageFormattable, pg.Object):
199
199
  return pg.Html.element(
200
200
  'div',
201
201
  [self.schema_str(protocol='python')],
202
- css_class=['lf-schema-definition']
202
+ css_classes=['lf-schema-definition']
203
203
  ).add_style(
204
204
  """
205
205
  .lf-schema-definition {
langfun/core/template.py CHANGED
@@ -17,7 +17,7 @@ import contextlib
17
17
  import dataclasses
18
18
  import functools
19
19
  import inspect
20
- from typing import Annotated, Any, Callable, Iterator, Sequence, Set, Tuple, Type, Union
20
+ from typing import Annotated, Any, Callable, Iterator, Set, Tuple, Type, Union
21
21
 
22
22
  import jinja2
23
23
  from jinja2 import meta as jinja2_meta
@@ -531,59 +531,48 @@ class Template(
531
531
  *,
532
532
  view: pg.views.HtmlTreeView,
533
533
  root_path: pg.KeyPath,
534
- collapse_template_vars_level: int | None = pg.View.PresetArgValue(1),
535
- collapse_level: int | None = pg.View.PresetArgValue(1), # pytype: disable=annotation-type-mismatch
534
+ collapse_level: int | None = None,
535
+ extra_flags: dict[str, Any] | None = None,
536
+ debug: bool = False,
536
537
  **kwargs,
537
538
  ):
539
+ extra_flags = extra_flags if extra_flags is not None else {}
540
+ collapse_template_vars_level: int | None = extra_flags.get(
541
+ 'collapse_template_vars_level', 1
542
+ )
543
+
538
544
  def render_template_str():
539
545
  return pg.Html.element(
540
546
  'div',
541
547
  [
542
548
  pg.Html.element('span', [self.template_str])
543
549
  ],
544
- css_class=['template-str'],
550
+ css_classes=['template-str'],
545
551
  )
546
552
 
547
553
  def render_fields():
548
- def render_value_fn(value, *, root_path, **kwargs):
549
- if isinstance(value, component.ContextualAttribute):
550
- inferred = self.sym_inferred(root_path.key, pg.MISSING_VALUE)
551
- if inferred != pg.MISSING_VALUE:
552
- return pg.Html.element(
553
- 'div',
554
- [
555
- view.render(inferred, root_path=root_path, **kwargs)
556
- ],
557
- css_class=['inferred-value'],
558
- )
559
- else:
560
- return pg.Html.element(
561
- 'span',
562
- ['(external)'],
563
- css_class=['contextual-variable'],
564
- )
565
- return view.render(
566
- value, root_path=root_path, **kwargs
567
- )
568
554
  return pg.Html.element(
569
555
  'fieldset',
570
556
  [
571
557
  pg.Html.element('legend', ['Template Variables']),
572
558
  view.complex_value(
573
- self.sym_init_args,
559
+ {k: v for k, v in self.sym_items()},
574
560
  name='fields',
575
561
  root_path=root_path,
576
- render_value_fn=render_value_fn,
577
- exclude_keys=['template_str', 'clean'],
578
562
  parent=self,
579
- collapse_level=view.max_collapse_level(
580
- collapse_level,
581
- collapse_template_vars_level,
582
- root_path
583
- ),
563
+ exclude_keys=['template_str', 'clean'],
564
+ collapse_level=max(
565
+ collapse_template_vars_level, collapse_level
566
+ ) if collapse_level is not None else None,
567
+ extra_flags=extra_flags,
568
+ debug=debug,
569
+ **view.get_passthrough_kwargs(
570
+ remove=['exclude_keys'],
571
+ **kwargs,
572
+ )
584
573
  ),
585
574
  ],
586
- css_class=['template-fields'],
575
+ css_classes=['template-fields'],
587
576
  )
588
577
 
589
578
  return pg.Html.element(
@@ -592,11 +581,12 @@ class Template(
592
581
  render_template_str(),
593
582
  render_fields(),
594
583
  ],
595
- css_class=['complex_value'],
584
+ css_classes=['complex_value'],
596
585
  )
597
586
 
598
- def _html_style(self) -> list[str]:
599
- return super()._html_style() + [
587
+ @classmethod
588
+ def _html_tree_view_css_styles(cls) -> list[str]:
589
+ return super()._html_tree_view_css_styles() + [
600
590
  """
601
591
  /* Langfun Template styles. */
602
592
  .template-str {
@@ -619,22 +609,19 @@ class Template(
619
609
  font-size: 0.8em;
620
610
  margin: 5px 0px 5px 0px;
621
611
  }
622
- .inferred-value::after {
623
- content: ' (inferred)';
624
- color: gray;
625
- font-style: italic;
626
- }
627
- .contextual-variable {
628
- margin: 0px 0px 0px 5px;
629
- font-style: italic;
630
- color: gray;
631
- }
632
612
  """
633
613
  ]
634
614
 
635
- # Additional CSS class to add to the root <details> element.
636
- def _html_element_class(self) -> Sequence[str] | None:
637
- return super()._html_element_class() + ['lf-template']
615
+ @classmethod
616
+ @functools.cache
617
+ def _html_tree_view_config(cls) -> dict[str, Any]:
618
+ return pg.views.HtmlTreeView.get_kwargs(
619
+ super()._html_tree_view_config(),
620
+ dict(
621
+ css_classes=['lf-template'],
622
+ )
623
+ )
624
+
638
625
 
639
626
  # Register converter from str to LangFunc, therefore we can always
640
627
  # pass strs to attributes that accept LangFunc.
@@ -579,12 +579,50 @@ class HtmlTest(unittest.TestCase):
579
579
  """
580
580
  y: Any
581
581
 
582
+ self.assertIn(
583
+ inspect.cleandoc(
584
+ """
585
+ /* Langfun Template styles. */
586
+ .template-str {
587
+ padding: 10px;
588
+ margin: 10px 5px 10px 5px;
589
+ font-style: italic;
590
+ font-size: 1.1em;
591
+ white-space: pre-wrap;
592
+ border: 1px solid #EEE;
593
+ border-radius: 5px;
594
+ background-color: #EEE;
595
+ color: #cc2986;
596
+ }
597
+ .template-fields {
598
+ margin: 0px 0px 5px 0px;
599
+ border: 1px solid #EEE;
600
+ padding: 5px;
601
+ }
602
+ .template-fields > legend {
603
+ font-size: 0.8em;
604
+ margin: 5px 0px 5px 0px;
605
+ }
606
+ """
607
+ ),
608
+ Foo(x=1, y=2).to_html().style_section,
609
+ )
610
+ self.assert_html_content(
611
+ Foo(x=Bar('{{y}} + {{z}}'), y=1).to_html(
612
+ enable_summary_tooltip=False,
613
+ ),
614
+ """
615
+ <details open class="pyglove foo lf-template"><summary><div class="summary-title lf-template">Foo(...)</div></summary><div class="complex_value"><div class="template-str"><span>{{x}} + {{y}} = ?</span></div><fieldset class="template-fields"><legend>Template Variables</legend><div class="complex-value foo"><details class="pyglove bar lf-template"><summary><div class="summary-name lf-template">x<span class="tooltip lf-template">x</span></div><div class="summary-title lf-template">Bar(...)</div></summary><div class="complex_value"><div class="template-str"><span>{{y}} + {{z}}</span></div><fieldset class="template-fields"><legend>Template Variables</legend><div class="complex-value bar"><details open class="pyglove contextual-attribute"><summary><div class="summary-name">y<span class="tooltip">x.y</span></div><div class="summary-title">ContextualAttribute(...)</div></summary><span class="simple-value int">1</span></details><details open class="pyglove contextual-attribute"><summary><div class="summary-name">z<span class="tooltip">x.z</span></div><div class="summary-title">ContextualAttribute(...)</div></summary><div class="unavailable-contextual">(not available)</div></details></div></fieldset></div></details><details open class="pyglove int"><summary><div class="summary-name">y<span class="tooltip">y</span></div><div class="summary-title">int</div></summary><span class="simple-value int">1</span></details></div></fieldset></div></details>
616
+ """
617
+ )
582
618
  self.assert_html_content(
583
619
  Foo(x=Bar('{{y}} + {{z}}'), y=1).to_html(
584
620
  enable_summary_tooltip=False,
621
+ collapse_level=0,
622
+ key_style='label',
585
623
  ),
586
624
  """
587
- <details open class="pyglove foo lf-template"><summary><div class="summary_title">Foo(...)</div></summary><div class="complex_value"><div class="template-str"><span>{{x}} + {{y}} = ?</span></div><fieldset class="template-fields"><legend>Template Variables</legend><div class="complex_value foo lf-template"><table><tr><td><span class="object_key str">x</span><span class="tooltip key-path">x</span></td><td><div><details class="pyglove bar lf-template"><summary><div class="summary_title">Bar(...)</div></summary><div class="complex_value"><div class="template-str"><span>{{y}} + {{z}}</span></div><fieldset class="template-fields"><legend>Template Variables</legend><div class="complex_value bar lf-template"><table><tr><td><span class="object_key str">y</span><span class="tooltip key-path">x.y</span></td><td><div><div class="inferred-value"><span class="simple_value int">1</span></div></div></td></tr><tr><td><span class="object_key str">z</span><span class="tooltip key-path">x.z</span></td><td><div><span class="contextual-variable">(external)</span></div></td></tr></table></div></fieldset></div></details></div></td></tr><tr><td><span class="object_key str">y</span><span class="tooltip key-path">y</span></td><td><div><span class="simple_value int">1</span></div></td></tr></table></div></fieldset></div></details>
625
+ <details class="pyglove foo lf-template"><summary><div class="summary-title lf-template">Foo(...)</div></summary><div class="complex_value"><div class="template-str"><span>{{x}} + {{y}} = ?</span></div><fieldset class="template-fields"><legend>Template Variables</legend><div class="complex-value foo"><table><tr><td><span class="object-key str">x</span><span class="tooltip">x</span></td><td><details class="pyglove bar lf-template"><summary><div class="summary-title lf-template">Bar(...)</div></summary><div class="complex_value"><div class="template-str"><span>{{y}} + {{z}}</span></div><fieldset class="template-fields"><legend>Template Variables</legend><div class="complex-value bar"><table><tr><td><span class="object-key str">y</span><span class="tooltip">x.y</span></td><td><details open class="pyglove contextual-attribute"><summary><div class="summary-title">ContextualAttribute(...)</div></summary><span class="simple-value int">1</span></details></td></tr><tr><td><span class="object-key str">z</span><span class="tooltip">x.z</span></td><td><details open class="pyglove contextual-attribute"><summary><div class="summary-title">ContextualAttribute(...)</div></summary><div class="unavailable-contextual">(not available)</div></details></td></tr></table></div></fieldset></div></details></td></tr><tr><td><span class="object-key str">y</span><span class="tooltip">y</span></td><td><span class="simple-value int">1</span></td></tr></table></div></fieldset></div></details>
588
626
  """
589
627
  )
590
628
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langfun
3
- Version: 0.1.2.dev202410170804
3
+ Version: 0.1.2.dev202410190803
4
4
  Summary: Langfun: Language as Functions.
5
5
  Home-page: https://github.com/google/langfun
6
6
  Author: Langfun Authors
@@ -1,8 +1,8 @@
1
1
  langfun/__init__.py,sha256=mCES7t3R7Z-ZQYvG38-yrVqZubrXNfGCa8tI5HGB7mE,2274
2
2
  langfun/core/__init__.py,sha256=xlvFTXc7IKUTs8aCFRFhzOLTmmeuhXgk9yx2InBLNiA,4937
3
- langfun/core/component.py,sha256=nxF4UD7NLduPjrf4IAtysMAIg3IChfoQHjY77vC8f_E,10263
4
- langfun/core/component_test.py,sha256=q15Xn51cVTu2RKxZ9U5VQgT3bm6RQ4638bKhWBtvW5o,8220
5
- langfun/core/concurrent.py,sha256=QW-LbgF555lwHYmnirYONVjpqgkn95CuQRuAErgYIIY,29598
3
+ langfun/core/component.py,sha256=kOWdhEYlGw62CO_7aB_oAdivVhnDfyoymRXHr10VtLo,11502
4
+ langfun/core/component_test.py,sha256=sG-T2wpvBfHqWGZE7sc4NayJj2aj5QFBzSwFiwrGEIc,10376
5
+ langfun/core/concurrent.py,sha256=ivUwaswRrwldLRZ_p4R3TUy6XqyWY9UdJ8oo2_1Ic0s,29838
6
6
  langfun/core/concurrent_test.py,sha256=F9kQKK0D6CHOejckFcVjCB-ThkBN8Oa4P8WV7FOhxIM,17042
7
7
  langfun/core/console.py,sha256=bk5rNPNm9rMGW5YT2HixxU04p2umnoabn5SDz6Dqe88,2317
8
8
  langfun/core/console_test.py,sha256=5SYJdxpJGLgdSSQqqMPoA1X6jpsLD8rgcyk-EgI65oE,1077
@@ -10,11 +10,11 @@ langfun/core/langfunc.py,sha256=G50YgoVZ0y1GFw2ev41MlOqr6qa8YakbvNC0h_E0PiA,1114
10
10
  langfun/core/langfunc_test.py,sha256=KC6fU1InBxdYU5JkLgtafTWZD6Kd1qPaZRzO7sIHf9o,8787
11
11
  langfun/core/language_model.py,sha256=AwvvwoaTbN0phDJBtXOxAIW4wnmEBrBiT0DknGPdn4o,29922
12
12
  langfun/core/language_model_test.py,sha256=cgoSdKwicnvHYo-tQeTdONXAVM-bvWLzgTlqxvace-A,28424
13
- langfun/core/logging.py,sha256=lZdSdlMwjgVBLcYKSa1LKxIv9WYYWce0mfFlLXHxXE8,7172
14
- langfun/core/logging_test.py,sha256=4YkRFb-3_a3ARsIrXtjphFvvA3nU8iBNC9WTwlkYC1A,4156
13
+ langfun/core/logging.py,sha256=2zVHV5E4vdsjxY8lFF1zZP0WQlts4LT3nXspOKqDeBs,7454
14
+ langfun/core/logging_test.py,sha256=b5bPTSUoYeICATaO6I8dOVumodwRbxSp1Oz96Sf3KcE,6104
15
15
  langfun/core/memory.py,sha256=f-asN1F7Vehgdn_fK84v73GrEUOxRtaW934keutTKjk,2416
16
- langfun/core/message.py,sha256=VO36UJOB5ftuHIAYWl5eVFv1sLBv6b5t3jvtlbtJ4jE,24486
17
- langfun/core/message_test.py,sha256=1XTMsHt8FxS9kT2Ij3D7zPhaT8ql3Go5kLQd-tbHSEY,29296
16
+ langfun/core/message.py,sha256=Mc-QWnP22ia-ZIKJ_9A3CZynB5sHOH7VkJm7eTDxsbM,25589
17
+ langfun/core/message_test.py,sha256=HaJ7zB0rtB_RF8mOfXH18csIViP8_QY12GD6ZV7k3H0,32603
18
18
  langfun/core/modality.py,sha256=hC0LF8EGCU2GJxTNbfzR441oOk2-HnHnAVWbwkLG0bI,4133
19
19
  langfun/core/modality_test.py,sha256=7SwhixFME2Q1sIXRgJx97EZFiIyC31A9NVr6_nDtFv4,2441
20
20
  langfun/core/natural_language.py,sha256=3ynSnaYQnjE60LIPK5fyMgdIjubnPYZwzGq4rWPeloE,1177
@@ -25,8 +25,8 @@ langfun/core/sampling.py,sha256=SCnS5PFJWNVxSKvSkSCNRUmruvScun8UcNN4gafuXcw,5866
25
25
  langfun/core/sampling_test.py,sha256=U7PANpMsl9E_pa4_Y4FzesSjcwg-u-LKHGCWSgv-8FY,3663
26
26
  langfun/core/subscription.py,sha256=euawEuSZP-BHydaT-AQpfYFL0m5pWPGcW0upFhrojqc,10930
27
27
  langfun/core/subscription_test.py,sha256=Y4ZdbZEwm83YNZBxHff0QR4QUa4rdaNXA3_jfIcArBo,8717
28
- langfun/core/template.py,sha256=cCGrfil3-yVPKL8Ri0p4voyZnU9tBy9mCIqnISR4lCE,25960
29
- langfun/core/template_test.py,sha256=Xo_8iYWRwK6actfmEkajw1ZGmmyK4DOwo0g_Ohq4ZA0,17847
28
+ langfun/core/template.py,sha256=SpI-UvVUDRJ5HYa4fVkOvbjEwrpUjhZoNqiG2adUAwE,25339
29
+ langfun/core/template_test.py,sha256=Qokz1hQFhRYaTZWBWGqvPJ0NXC9B9ennUpnRYHEf0hE,20542
30
30
  langfun/core/text_formatting.py,sha256=d7t9vaY6aCn1dkfkikpNYnBy5E_i93vHbfyDWFclGZU,5284
31
31
  langfun/core/text_formatting_test.py,sha256=ck0Xzdd4YF4CtCUj7VE0GybfbAyKQ8p3xkM1FBGrqIk,2096
32
32
  langfun/core/coding/__init__.py,sha256=5utju_fwEsImaiftx4oXKl9FAM8p281k8-Esdh_-m1w,835
@@ -44,13 +44,13 @@ langfun/core/coding/python/parsing_test.py,sha256=9vAWF484kWIm6JZq8NFiMgKUDhXV-d
44
44
  langfun/core/coding/python/permissions.py,sha256=1QWGHvzL8MM0Ok_auQ9tURqZHtdOfJaDpBzZ29GUE-c,2544
45
45
  langfun/core/coding/python/permissions_test.py,sha256=w5EDb8QxpxgJyZkojyzVWQvDfg366zn99-g__6TbPQ0,2699
46
46
  langfun/core/eval/__init__.py,sha256=Ogdr9OtTywhhLPHi3AZzOD2mXX2oyaHWflrSTMm96uA,1899
47
- langfun/core/eval/base.py,sha256=3ALt5L51C7jnulLuJMw2uhEvB01d-GNuG-9iMtxM4ic,75230
47
+ langfun/core/eval/base.py,sha256=mF3JUUvuDafNDnt0G_0yv022yGZgTy1NAxDMZonvoV8,75430
48
48
  langfun/core/eval/base_test.py,sha256=gAxamZKvHzT3wVr3xVtXLiwBBi5VFX1I29_QuKSR4Wg,26958
49
- langfun/core/eval/matching.py,sha256=lkI3dtvJe5ql1ppA8Dy6oNVvu5YNtemRos73WQMsgSY,9278
49
+ langfun/core/eval/matching.py,sha256=UnjdM_ebPqXKJamY4lvL3AYxrMIz3LqkjRTnHJ5xsYc,9349
50
50
  langfun/core/eval/matching_test.py,sha256=QCoYEuf4b_1bkHqUCuRzKMbXHrV3AB2FCOBivo1stC4,5249
51
51
  langfun/core/eval/patching.py,sha256=R0s2eAd1m97exQt06dmUL0V_MBG0W2Hxg7fhNB7cXW0,3866
52
52
  langfun/core/eval/patching_test.py,sha256=8kCd54Egjju22FMgtJuxEsrXkW8ifs-UUBHtrCG1L6w,4775
53
- langfun/core/eval/scoring.py,sha256=wZz90Iw5Sco3cAiA1T71cJEWhD6qmvMeE1Ai-pez_aY,6210
53
+ langfun/core/eval/scoring.py,sha256=SUdMzOkP0n2qGaSuUA4VwFiTw36jgMvgCJHPJS4yYDw,6254
54
54
  langfun/core/eval/scoring_test.py,sha256=O8olHbrUEg60gMxwOkWzKBJZpZoUlmVnBANX5Se2SXM,4546
55
55
  langfun/core/llms/__init__.py,sha256=baM-YFySnOyijgmMjv1mKPYDvdlny2Md2aZ5bWyxPfc,5859
56
56
  langfun/core/llms/anthropic.py,sha256=zPisDmmt6zq-U6hEnoSgReXujmmAj7VGs4KHgzcw1EU,8976
@@ -81,8 +81,8 @@ langfun/core/modalities/audio.py,sha256=qCrVCX690SG0ps-ZfOtNWvHn_CmdJsmxF7GySScW
81
81
  langfun/core/modalities/audio_test.py,sha256=yyGEBYqMXmNs_F2dEtj-PX8HE040vqh-YQppsvdxPw4,2025
82
82
  langfun/core/modalities/image.py,sha256=ovcX8NLBNv8WzxAdhQ-u4VQfHVBkWijRj_oiNwhE9lk,1768
83
83
  langfun/core/modalities/image_test.py,sha256=XMgtJXY75R5eo0CZ222D1QUy57_hESnttmCGWwDLt7k,3824
84
- langfun/core/modalities/mime.py,sha256=BrhS-r_1455dSCoIX5hhan9EKVapq0tnO2AFf1aYplg,7371
85
- langfun/core/modalities/mime_test.py,sha256=0LLptQfF71-WKStoWs3-CvWZSIRglCvgEuU_AwkN8bI,4382
84
+ langfun/core/modalities/mime.py,sha256=jKE1eDaP46isD-IjWgfzhxnTcmQJ-b4wCoq6tury3J8,7576
85
+ langfun/core/modalities/mime_test.py,sha256=lC99gsaTUwVkxQat9hkR3CV-1GI-QPMgwaIdf9EqnoM,4471
86
86
  langfun/core/modalities/ms_office.py,sha256=0PnM6W9SovVfJNd4XCpUfOcGBuvj4hlA1zqPjdsJNFM,3725
87
87
  langfun/core/modalities/ms_office_test.py,sha256=rrDBx51ELAqRaUX6Y6tgg0k3tEFHOlRMfUpeULD7mlo,87868
88
88
  langfun/core/modalities/pdf.py,sha256=mfaeCbUA4JslFVTARiJh8hW7imvL4tLVw9gUhO5bAZA,727
@@ -96,13 +96,13 @@ langfun/core/structured/description.py,sha256=SXW4MJvshFjbR-0gw6rE21o6WXq12UlRXa
96
96
  langfun/core/structured/description_test.py,sha256=UtZGjSFUaQ6130t1E5tcL7ODu0xIefkapb53TbnqsK8,7362
97
97
  langfun/core/structured/function_generation.py,sha256=pFgS3vcRAWiuFBol2x5Eeip3XqoudONsOpeJpWyjT3s,7479
98
98
  langfun/core/structured/function_generation_test.py,sha256=ZJI-aaGgWWszn92u7h5IZ9Pl70N2DgAGGJrIxPzsvwg,10065
99
- langfun/core/structured/mapping.py,sha256=gx81qwVv6nE3I7a3w7sgdIZZXLhvSgoZYqajT_fE7L8,13054
100
- langfun/core/structured/mapping_test.py,sha256=Oal51n0R2SMKCh7aoZnD_BYBnLLYrXE3cH_bjPu-jlY,8388
99
+ langfun/core/structured/mapping.py,sha256=pMSvxEPqA8h7LsCMKMGG5Fcm0hyaIOTHFcoddQpn4cs,13574
100
+ langfun/core/structured/mapping_test.py,sha256=bHm2ZCXBITq_G8Lvw_olFHeUUc4s_lGXZm9v9JhoPB4,9630
101
101
  langfun/core/structured/parsing.py,sha256=keoVqEfzAbdULh6GawWFsTQzU91MzJXYFZjXGXLaD8g,11492
102
102
  langfun/core/structured/parsing_test.py,sha256=-sYWlamAuU_tMUSEq2vDhEU6uz_9fBtQ6M6ODBAYy_I,20941
103
103
  langfun/core/structured/prompting.py,sha256=huwwh01AQQCwPBQESOMI_V1V5PZkVQ8C89Yjk67_4Uw,10677
104
104
  langfun/core/structured/prompting_test.py,sha256=pviyb8yTnxkWPAZodLIlQT8y2ScE6FfSHKWf1NUtV-Y,26718
105
- langfun/core/structured/schema.py,sha256=E3f49ej7XFiFd14SErcpgJI5WLm1aTLxL-PVs-UrmQE,28154
105
+ langfun/core/structured/schema.py,sha256=UO44Gn4XbFfHmTMYdrhuC8LfGa6kwaOCAMFqBnvFNns,28156
106
106
  langfun/core/structured/schema_generation.py,sha256=U3nRQsqmMZg_qIVDh2fiY3K4JLfsAL1LcKzIFP1iXFg,5316
107
107
  langfun/core/structured/schema_generation_test.py,sha256=RM9s71kMNg2jTePwInkiW9fK1ACN37eyPeF8OII-0zw,2950
108
108
  langfun/core/structured/schema_test.py,sha256=RjYhwTgktQgyqAjzLvo967nTiIK9KWgP-aNGg4e7ihE,25258
@@ -119,8 +119,8 @@ langfun/core/templates/demonstration.py,sha256=vCrgYubdZM5Umqcgp8NUVGXgr4P_c-fik
119
119
  langfun/core/templates/demonstration_test.py,sha256=SafcDQ0WgI7pw05EmPI2S4v1t3ABKzup8jReCljHeK4,2162
120
120
  langfun/core/templates/selfplay.py,sha256=yhgrJbiYwq47TgzThmHrDQTF4nDrTI09CWGhuQPNv-s,2273
121
121
  langfun/core/templates/selfplay_test.py,sha256=Ot__1P1M8oJfoTp-M9-PQ6HUXqZKyMwvZ5f7yQ3yfyM,2326
122
- langfun-0.1.2.dev202410170804.dist-info/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
123
- langfun-0.1.2.dev202410170804.dist-info/METADATA,sha256=uGoe7BFwYF6BnbUo8g2h64X7j-c9FInLEUQpc6IKM84,8890
124
- langfun-0.1.2.dev202410170804.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
125
- langfun-0.1.2.dev202410170804.dist-info/top_level.txt,sha256=RhlEkHxs1qtzmmtWSwYoLVJAc1YrbPtxQ52uh8Z9VvY,8
126
- langfun-0.1.2.dev202410170804.dist-info/RECORD,,
122
+ langfun-0.1.2.dev202410190803.dist-info/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
123
+ langfun-0.1.2.dev202410190803.dist-info/METADATA,sha256=P6h0k_SY9HTbCZd6foSjU6qj0-YrljfTw2Q97T5WWg0,8890
124
+ langfun-0.1.2.dev202410190803.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
125
+ langfun-0.1.2.dev202410190803.dist-info/top_level.txt,sha256=RhlEkHxs1qtzmmtWSwYoLVJAc1YrbPtxQ52uh8Z9VvY,8
126
+ langfun-0.1.2.dev202410190803.dist-info/RECORD,,