langfun 0.1.2.dev202505130804__py3-none-any.whl → 0.1.2.dev202505150805__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.

Potentially problematic release.


This version of langfun might be problematic. Click here for more details.

@@ -15,6 +15,7 @@
15
15
 
16
16
  import inspect
17
17
  import math
18
+ import time
18
19
  from typing import Any
19
20
  import unittest
20
21
 
@@ -984,6 +985,19 @@ class LfQueryPythonV2Test(unittest.TestCase):
984
985
  ):
985
986
  querying.query('Compute 1 + 2', int)
986
987
 
988
+ def test_not_allowed_code(self):
989
+ lm = fake.StaticResponse(
990
+ """
991
+ class Foo:
992
+ pass
993
+ """
994
+ )
995
+ with self.assertRaisesRegex(
996
+ mapping.MappingError,
997
+ 'Class definition is not allowed',
998
+ ):
999
+ querying.query('Compute 1 + 2', int, lm=lm)
1000
+
987
1001
  def test_autofix(self):
988
1002
  lm = fake.StaticSequence([
989
1003
  '=1',
@@ -1319,7 +1333,9 @@ class QueryInvocationTest(unittest.TestCase):
1319
1333
 
1320
1334
  self.assertEqual(queries[0].id, '123')
1321
1335
  self.assertTrue(queries[0].has_error)
1322
- self.assertIsInstance(queries[0].output, mapping.MappingError)
1336
+ self.assertIsInstance(queries[0].error, pg.utils.ErrorInfo)
1337
+ self.assertIn('MappingError', queries[0].error.tag)
1338
+ self.assertIsNone(queries[0].output)
1323
1339
 
1324
1340
  def test_kwargs(self):
1325
1341
  lm = fake.StaticSequence([
@@ -1374,11 +1390,147 @@ class QueryInvocationTest(unittest.TestCase):
1374
1390
  mapping_example = queries[0].as_mapping_example()
1375
1391
  self.assertTrue(pg.eq(mapping_example.input, lf.Template('foo {{x}}', x=1)))
1376
1392
  self.assertEqual(mapping_example.schema.spec.cls, Activity)
1377
- self.assertIsInstance(mapping_example.output, mapping.MappingError)
1393
+ self.assertEqual(mapping_example.output, 'Activity(description="hi"')
1378
1394
 
1379
1395
 
1380
1396
  class TrackQueriesTest(unittest.TestCase):
1381
1397
 
1398
+ def test_query_without_schema(self):
1399
+ lm = fake.StaticSequence([
1400
+ 'bar',
1401
+ ])
1402
+ with querying.track_queries() as queries:
1403
+ querying.query('foo', lm=lm)
1404
+ self.assertEqual(len(queries), 1)
1405
+ self.assertEqual(queries[0].lm_response, 'bar')
1406
+ self.assertTrue(pg.eq(queries[0].input, lf.Template('foo')))
1407
+ self.assertEqual(queries[0].lm_request, 'foo')
1408
+ self.assertIsNone(queries[0].schema)
1409
+ self.assertEqual(queries[0].protocol, 'python')
1410
+ self.assertEqual(queries[0].default, lf.RAISE_IF_HAS_ERROR)
1411
+
1412
+ self.assertEqual(queries[0].output, 'bar')
1413
+ self.assertFalse(queries[0].has_error)
1414
+ self.assertIsNone(queries[0].error)
1415
+ self.assertIsNotNone(queries[0].end_time)
1416
+ self.assertIsNotNone(queries[0].usage_summary)
1417
+
1418
+ def test_query_with_schema(self):
1419
+ lm = fake.StaticSequence([
1420
+ 'Activity(description="hi")',
1421
+ ])
1422
+ with querying.track_queries() as queries:
1423
+ querying.query('foo', Activity, lm=lm)
1424
+ self.assertEqual(len(queries), 1)
1425
+ self.assertTrue(pg.eq(queries[0].input, lf.Template('foo')))
1426
+ self.assertIn('foo', queries[0].lm_request.text)
1427
+ self.assertIn('Please respond to ', queries[0].lm_request.text)
1428
+ self.assertEqual(queries[0].schema.spec.cls, Activity)
1429
+ self.assertEqual(queries[0].default, lf.RAISE_IF_HAS_ERROR)
1430
+ self.assertTrue(queries[0].protocol.startswith('python:'))
1431
+
1432
+ self.assertTrue(pg.eq(queries[0].output, Activity(description='hi')))
1433
+ self.assertFalse(queries[0].has_error)
1434
+ self.assertIsNone(queries[0].error)
1435
+ self.assertIsNotNone(queries[0].end_time)
1436
+ self.assertIsNotNone(queries[0].usage_summary)
1437
+
1438
+ def test_query_with_schema_and_default(self):
1439
+ lm = fake.StaticSequence([
1440
+ 'Activity(description="hi")',
1441
+ ])
1442
+ with querying.track_queries() as queries:
1443
+ querying.query('foo', Activity, default=None, lm=lm)
1444
+ self.assertEqual(len(queries), 1)
1445
+ self.assertTrue(pg.eq(queries[0].input, lf.Template('foo')))
1446
+ self.assertIn('foo', queries[0].lm_request.text)
1447
+ self.assertIn('Please respond to ', queries[0].lm_request.text)
1448
+ self.assertEqual(queries[0].schema.spec.cls, Activity)
1449
+ self.assertIsNone(queries[0].default)
1450
+ self.assertTrue(queries[0].protocol.startswith('python:'))
1451
+
1452
+ self.assertTrue(pg.eq(queries[0].output, Activity(description='hi')))
1453
+ self.assertFalse(queries[0].has_error)
1454
+ self.assertIsNone(queries[0].error)
1455
+ self.assertIsNotNone(queries[0].end_time)
1456
+ self.assertIsNotNone(queries[0].usage_summary)
1457
+
1458
+ def test_oop_error_for_query_with_schema(self):
1459
+ lm = fake.StaticSequence([
1460
+ 'Activity(description="hi"',
1461
+ ])
1462
+ with (
1463
+ self.assertRaises(mapping.MappingError),
1464
+ querying.track_queries() as queries
1465
+ ):
1466
+ querying.query('foo', Activity, lm=lm)
1467
+ self.assertEqual(len(queries), 1)
1468
+ self.assertTrue(pg.eq(queries[0].input, lf.Template('foo')))
1469
+ self.assertIn('foo', queries[0].lm_request.text)
1470
+ self.assertIn('Please respond to ', queries[0].lm_request.text)
1471
+ self.assertEqual(queries[0].schema.spec.cls, Activity)
1472
+ self.assertEqual(queries[0].default, lf.RAISE_IF_HAS_ERROR)
1473
+ self.assertTrue(queries[0].protocol.startswith('python:'))
1474
+
1475
+ self.assertIsNone(queries[0].output)
1476
+ self.assertTrue(queries[0].has_error)
1477
+ self.assertTrue(queries[0].has_oop_error)
1478
+ self.assertIsNotNone(queries[0].error)
1479
+ self.assertIn('MappingError', queries[0].error.tag)
1480
+ self.assertIsNotNone(queries[0].end_time)
1481
+ self.assertIsNotNone(queries[0].usage_summary)
1482
+
1483
+ def test_oop_error_for_query_with_schema_and_default(self):
1484
+ lm = fake.StaticSequence([
1485
+ 'Activity(description="hi"',
1486
+ ])
1487
+ with querying.track_queries() as queries:
1488
+ querying.query('foo', Activity, default=1, lm=lm)
1489
+
1490
+ self.assertEqual(len(queries), 1)
1491
+ self.assertTrue(pg.eq(queries[0].input, lf.Template('foo')))
1492
+ self.assertIn('foo', queries[0].lm_request.text)
1493
+ self.assertIn('Please respond to ', queries[0].lm_request.text)
1494
+ self.assertEqual(queries[0].schema.spec.cls, Activity)
1495
+ self.assertEqual(queries[0].default, 1)
1496
+ self.assertTrue(queries[0].protocol.startswith('python:'))
1497
+
1498
+ self.assertEqual(queries[0].output, 1)
1499
+ self.assertTrue(queries[0].has_error)
1500
+ self.assertTrue(queries[0].has_oop_error)
1501
+ self.assertIsNotNone(queries[0].error)
1502
+ self.assertIn('MappingError', queries[0].error.tag)
1503
+ self.assertIsNotNone(queries[0].end_time)
1504
+ self.assertIsNotNone(queries[0].usage_summary)
1505
+
1506
+ def test_lm_error_for_query_with_schema(self):
1507
+ class BadLLM(fake.StaticResponse):
1508
+ response = 'bad call'
1509
+
1510
+ def _sample(self, *args, **kwargs):
1511
+ raise ValueError('bad LLM')
1512
+
1513
+ with (
1514
+ self.assertRaises(ValueError),
1515
+ querying.track_queries() as queries
1516
+ ):
1517
+ querying.query('foo', Activity, default=1, lm=BadLLM())
1518
+
1519
+ self.assertEqual(len(queries), 1)
1520
+ self.assertTrue(pg.eq(queries[0].input, lf.Template('foo')))
1521
+ self.assertIn('foo', queries[0].lm_request.text)
1522
+ self.assertIn('Please respond to ', queries[0].lm_request.text)
1523
+ self.assertEqual(queries[0].schema.spec.cls, Activity)
1524
+ self.assertEqual(queries[0].default, 1)
1525
+ self.assertTrue(queries[0].protocol.startswith('python:'))
1526
+
1527
+ self.assertIsNone(queries[0].output)
1528
+ self.assertTrue(queries[0].has_error)
1529
+ self.assertIsNotNone(queries[0].error)
1530
+ self.assertIn('ValueError', queries[0].error.tag)
1531
+ self.assertIsNotNone(queries[0].end_time)
1532
+ self.assertIsNotNone(queries[0].usage_summary)
1533
+
1382
1534
  def test_include_child_scopes(self):
1383
1535
  lm = fake.StaticSequence([
1384
1536
  'bar',
@@ -1413,6 +1565,94 @@ class TrackQueriesTest(unittest.TestCase):
1413
1565
  self.assertEqual(len(child_queries), 1)
1414
1566
  self.assertIs(child_queries[0], queries[1])
1415
1567
 
1568
+ def test_callbacks(self):
1569
+ lm = fake.StaticSequence([
1570
+ 'bar',
1571
+ ])
1572
+ state = {}
1573
+ def start_callabck(query):
1574
+ self.assertFalse(query.is_completed)
1575
+ self.assertIsNone(query.end_time)
1576
+ elapse1 = query.elapse
1577
+ self.assertGreater(elapse1, 0)
1578
+ time.sleep(0.1)
1579
+ self.assertGreater(query.elapse, elapse1)
1580
+ self.assertIsNotNone(query.usage_summary)
1581
+ self.assertEqual(query.usage_summary.total.num_requests, 0)
1582
+ self.assertIsNone(query.lm_response)
1583
+ self.assertIsNone(query.output)
1584
+ self.assertIsNone(query.error)
1585
+ state['start'] = query
1586
+
1587
+ def end_callback(query):
1588
+ self.assertTrue(query.is_completed)
1589
+ self.assertIsNotNone(query.end_time)
1590
+ self.assertIsNotNone(query.usage_summary)
1591
+ self.assertEqual(query.usage_summary.total.num_requests, 1)
1592
+ self.assertIsNotNone(query.lm_response)
1593
+ self.assertIsNotNone(query.output)
1594
+ self.assertIsNone(query.error)
1595
+ state['end'] = query
1596
+
1597
+ with querying.track_queries(
1598
+ start_callabck=start_callabck, end_callabck=end_callback
1599
+ ) as queries:
1600
+ querying.query('foo', lm=lm)
1601
+ self.assertIs(state['start'], queries[0])
1602
+ self.assertIs(state['end'], queries[0])
1603
+
1604
+ def test_callbacks_with_error(self):
1605
+ lm = fake.StaticSequence([
1606
+ 'bar',
1607
+ ])
1608
+ state = {}
1609
+ def start_callabck(query):
1610
+ self.assertFalse(query.is_completed)
1611
+ self.assertIsNone(query.end_time)
1612
+ self.assertIsNotNone(query.usage_summary)
1613
+ self.assertEqual(query.usage_summary.total.num_requests, 0)
1614
+ self.assertIsNone(query.lm_response)
1615
+ self.assertIsNone(query.output)
1616
+ self.assertIsNone(query.error)
1617
+ state['start'] = query
1618
+
1619
+ def end_callback(query):
1620
+ self.assertTrue(query.is_completed)
1621
+ self.assertIsNotNone(query.end_time)
1622
+ self.assertIsNotNone(query.usage_summary)
1623
+ self.assertEqual(query.usage_summary.total.num_requests, 1)
1624
+ self.assertIsNotNone(query.lm_response)
1625
+ self.assertIsNone(query.output)
1626
+ self.assertIsNotNone(query.error)
1627
+ state['end'] = query
1628
+
1629
+ with self.assertRaises(mapping.MappingError):
1630
+ with querying.track_queries(
1631
+ start_callabck=start_callabck, end_callabck=end_callback
1632
+ ) as queries:
1633
+ querying.query('foo', int, lm=lm)
1634
+ self.assertIs(state['start'], queries[0])
1635
+ self.assertIs(state['end'], queries[0])
1636
+
1637
+ def test_track_with_autofix(self):
1638
+ lm = fake.StaticSequence([
1639
+ '=1',
1640
+ inspect.cleandoc("""
1641
+ CorrectedCode(
1642
+ corrected_code='1',
1643
+ )
1644
+ """),
1645
+ ])
1646
+ with querying.track_queries() as queries:
1647
+ querying.query('foo', int, lm=lm, autofix=1)
1648
+ self.assertEqual(len(queries), 2)
1649
+ self.assertTrue(queries[0].has_error)
1650
+ self.assertTrue(queries[0].has_oop_error)
1651
+ self.assertIsNone(queries[0].output)
1652
+ self.assertFalse(queries[1].has_error)
1653
+ self.assertEqual(queries[1].output.__class__.__name__, 'CorrectedCode')
1654
+ self.assertEqual(queries[1].output.corrected_code, '1')
1655
+
1416
1656
  def test_exclude_child_scopes(self):
1417
1657
  lm = fake.StaticSequence([
1418
1658
  'bar',
@@ -722,6 +722,9 @@ class ValuePythonRepr(ValueRepr):
722
722
  schema: Schema | None = None,
723
723
  *,
724
724
  additional_context: dict[str, Type[Any]] | None = None,
725
+ permission: pg.coding.CodePermission = (
726
+ pg.coding.CodePermission.ASSIGN | pg.coding.CodePermission.CALL
727
+ ),
725
728
  autofix=0,
726
729
  autofix_lm: lf.LanguageModel = lf.contextual(),
727
730
  **kwargs,
@@ -737,6 +740,7 @@ class ValuePythonRepr(ValueRepr):
737
740
  global_vars=global_vars,
738
741
  autofix=autofix,
739
742
  autofix_lm=autofix_lm,
743
+ permission=permission,
740
744
  )
741
745
 
742
746
 
@@ -744,6 +748,9 @@ def structure_from_python(
744
748
  code: str,
745
749
  *,
746
750
  global_vars: dict[str, Any] | None = None,
751
+ permission: pg.coding.CodePermission = (
752
+ pg.coding.CodePermission.ASSIGN | pg.coding.CodePermission.CALL
753
+ ),
747
754
  autofix=0,
748
755
  autofix_lm: lf.LanguageModel = lf.contextual(),
749
756
  ) -> Any:
@@ -769,6 +776,7 @@ def structure_from_python(
769
776
  sandbox=False,
770
777
  max_attempts=autofix,
771
778
  lm=autofix_lm,
779
+ permission=permission,
772
780
  )
773
781
 
774
782
 
@@ -27,6 +27,7 @@ class GenerateClass(mapping.Mapping):
27
27
  input_title = 'GENERATION_CONTEXT'
28
28
  context_title = 'CLASS_NAME'
29
29
  output_title = 'OUTPUT_CLASS'
30
+ permission = pg.coding.CodePermission.ALL
30
31
 
31
32
  preamble: lf.Template = lf.Template("""
32
33
  Help generate a class based on the last {{ context_title }} and {{ input_title }}.
@@ -149,7 +149,8 @@ class SchemaTest(unittest.TestCase):
149
149
  class C(B):
150
150
  pass
151
151
  """,
152
- global_vars=dict(B=B)
152
+ global_vars=dict(B=B),
153
+ permission=pg.coding.CodePermission.ALL,
153
154
  )
154
155
  self.assertEqual(v.__module__, 'builtins')
155
156
  self.assertEqual(schema.class_dependencies(), [Foo, A, Bar, X, B])
@@ -175,7 +176,8 @@ class SchemaTest(unittest.TestCase):
175
176
  class CC(BB):
176
177
  pass
177
178
  """,
178
- global_vars=dict(BB=BB)
179
+ global_vars=dict(BB=BB),
180
+ permission=pg.coding.CodePermission.ALL,
179
181
  )
180
182
  self.assertEqual(v.__module__, 'builtins')
181
183
  schema = schema_lib.Schema([AA])
@@ -818,7 +820,8 @@ class ValuePythonReprTest(unittest.TestCase):
818
820
  x: Dict[str, Any]
819
821
  y: Optional[Sequence[str]]
820
822
  z: Union[int, List[int], Tuple[int]]
821
- """
823
+ """,
824
+ permission=pg.coding.CodePermission.ALL,
822
825
  )
823
826
  )
824
827
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langfun
3
- Version: 0.1.2.dev202505130804
3
+ Version: 0.1.2.dev202505150805
4
4
  Summary: Langfun: Language as Functions.
5
5
  Home-page: https://github.com/google/langfun
6
6
  Author: Langfun Authors
@@ -4,13 +4,13 @@ langfun/core/component.py,sha256=g1kQM0bryYYYWVDrSMnHfc74wIBbpfe5_B3s-UIP5GE,302
4
4
  langfun/core/component_test.py,sha256=0CxTgjAud3aj8wBauFhG2FHDqrxCTl4OI4gzQTad-40,9254
5
5
  langfun/core/concurrent.py,sha256=zY-pXqlGqss_GI20tM1gXvyW8QepVPUuFNmutcIdhbI,32760
6
6
  langfun/core/concurrent_test.py,sha256=roMFze0EKuyPbmG6DZzz8K8VGsZwWzc0F1uJZTFROC4,17572
7
- langfun/core/console.py,sha256=V_mOiFi9oGh8gLsUeR56pdFDkuvYOpvQt7DY1KUTWTA,2535
7
+ langfun/core/console.py,sha256=cLQEf84aDxItA9fStJV22xJch0TqFLNf9hLqwJ0RHmU,2652
8
8
  langfun/core/console_test.py,sha256=pBOcuNMJdVELywvroptfcRtJMsegMm3wSlHAL2TdxVk,1679
9
9
  langfun/core/langfunc.py,sha256=G50YgoVZ0y1GFw2ev41MlOqr6qa8YakbvNC0h_E0PiA,11140
10
10
  langfun/core/langfunc_test.py,sha256=CDn-gJCa5EnjN7cotAVCfSCbuzddq2o-HzEt7kV8HbY,8882
11
- langfun/core/language_model.py,sha256=dw81qgdl-zn-qOIbRMSurtAmmpiwr2sSYlSlW19nUw0,47829
11
+ langfun/core/language_model.py,sha256=GCvbu749TviZyLQSNunO0rKeDAb7E_6G4rzqQJerN_E,47913
12
12
  langfun/core/language_model_test.py,sha256=iA5uo7rIj2jAtCYzMzhyNg1fWqE2Onn60bOO58q72C0,36454
13
- langfun/core/logging.py,sha256=ypjSwGzQpIhadewEKkIH5VWS55rfU4e6mlni41PMHlw,9116
13
+ langfun/core/logging.py,sha256=jwPamwFYozrs3Tsds8xXG23PhfqODTZ2Au7poTH3yxE,9121
14
14
  langfun/core/logging_test.py,sha256=vbVGOQxwMmVSiFfbt2897gUt-8nqDpV64jCAeUG_q5U,6924
15
15
  langfun/core/memory.py,sha256=vyXVvfvSdLLJAzdIupnbn3k26OgclCx-OJ7gddS5e1Y,2070
16
16
  langfun/core/message.py,sha256=qUJZ9NfrlYG3aU_K2ud236gdTnvZ7Qw2T4pv4hI9ivg,32817
@@ -26,13 +26,13 @@ langfun/core/subscription_test.py,sha256=Y4ZdbZEwm83YNZBxHff0QR4QUa4rdaNXA3_jfIc
26
26
  langfun/core/template.py,sha256=jNhYSrbLIn9kZOa03w5QZbyjgfnzJzE_ZrrMvvWY4t4,24929
27
27
  langfun/core/template_test.py,sha256=AQv_m9qE93WxhEhSlm1xaBgB4hu0UVtA53dljngkUW0,17090
28
28
  langfun/core/agentic/__init__.py,sha256=qR3jlfUO4rhIoYdRDLz-d22YZf3FvU4FW88vsjiGDQQ,1224
29
- langfun/core/agentic/action.py,sha256=jxjW4vkJs3p-AYb83P0AVnmE93Vx7z0QoFsm40NQ65k,46853
30
- langfun/core/agentic/action_eval.py,sha256=JXhS5qEjWu9EZ0chDsjWxCqPAV26PUCBijtUYxiDeO4,4975
29
+ langfun/core/agentic/action.py,sha256=WEKCaqtGVYKHARvY0Nqichc_hMKkJUYarrUky-DsfHk,50709
30
+ langfun/core/agentic/action_eval.py,sha256=YTilyUEkJl_8FVMgdfO17PurWWaEJ6oA15CuefJJRLk,4887
31
31
  langfun/core/agentic/action_eval_test.py,sha256=7AkOwNbUX-ZgR1R0a7bvUZ5abNTUV7blf_8Mnrwb-II,2811
32
- langfun/core/agentic/action_test.py,sha256=wrx7_JUyL6EXhJeUqmPkPyIwOAh_KwTOWhSRgv2wYWo,15613
32
+ langfun/core/agentic/action_test.py,sha256=FO42Ab_riHHJxD6iJensskDCMx1-j7blzPr3fFaIfwc,15885
33
33
  langfun/core/coding/__init__.py,sha256=5utju_fwEsImaiftx4oXKl9FAM8p281k8-Esdh_-m1w,835
34
34
  langfun/core/coding/python/__init__.py,sha256=4ByknuoNU-mOIHwHKnTtmo6oD64oMFtlqPlYWmA5Wic,1736
35
- langfun/core/coding/python/correction.py,sha256=7zBedlhQKMPA4cfchUMxAOFl6Zl5RqCyllRHGWys40s,7092
35
+ langfun/core/coding/python/correction.py,sha256=4PD76Xfv36Xrm8Ji3-GgGDNImtcDqWfMw3z6ircJMlM,7285
36
36
  langfun/core/coding/python/correction_test.py,sha256=sie88lAbsV15bvkRcYC88pgToybZYXI32Xmg_ym5V1A,4175
37
37
  langfun/core/coding/python/execution.py,sha256=tsXnJ-11RqNDro0C-6LwbHkqPuNVJ_cLxAq8-C5Wz20,4442
38
38
  langfun/core/coding/python/execution_test.py,sha256=NynCGNP0gZ08fqmmQIJjJu6HmhkNOSkgWUXUCNQ0_yg,5990
@@ -82,8 +82,8 @@ langfun/core/eval/v2/reporting_test.py,sha256=hcPJJaMtPulqERvHYTpId83WXdqDKnnexm
82
82
  langfun/core/eval/v2/runners.py,sha256=iqbH4jMtnNMhfuv1eHaxJmk1Vvsrz-sAJJFP8U44-tA,16758
83
83
  langfun/core/eval/v2/runners_test.py,sha256=DO3xV0sBNB6n65j41xx2i7gqUCJcPF37DFZLEjrmISg,11987
84
84
  langfun/core/llms/__init__.py,sha256=QWxRhzVn_vgJvdmW_xs5PcPuDbHsUxTU94YyV4Ofl34,8684
85
- langfun/core/llms/anthropic.py,sha256=qaclpfX3qeHoZMDxU3Gn-638Vi4IyCbxdow3zgGUHK4,22195
86
- langfun/core/llms/anthropic_test.py,sha256=dFnNvrgwCYUseDuiuWCBoQ5jloYX9RIlZQf7cCLPNU4,8282
85
+ langfun/core/llms/anthropic.py,sha256=dCkTYvwb_wWWeKQNzMtRfA6kno1E_bO9PBHSNqL0wiw,22080
86
+ langfun/core/llms/anthropic_test.py,sha256=qA9vByp_cwwXNlXzcwHpPWFnO9lfFo8NKfDi5nBNqgI,9052
87
87
  langfun/core/llms/azure_openai.py,sha256=-KkSLaR54MlsIqz_XIwv0TnsBnvNTAxnjA2Q2O2u5KM,2733
88
88
  langfun/core/llms/azure_openai_test.py,sha256=lkMZkQdJBV97fTM4C4z8qNfvr6spgiN5G4hvVUIVr0M,1735
89
89
  langfun/core/llms/compositional.py,sha256=csW_FLlgL-tpeyCOTVvfUQkMa_zCN5Y2I-YbSNuK27U,2872
@@ -92,7 +92,7 @@ langfun/core/llms/deepseek.py,sha256=jvTxdXPr-vH6HNakn_Ootx1heDg8Fen2FUkUW36bpCs
92
92
  langfun/core/llms/deepseek_test.py,sha256=DvROWPlDuow5E1lfoSkhyGt_ELA19JoQoDsTnRgDtTg,1847
93
93
  langfun/core/llms/fake.py,sha256=xmgCkk9y0I4x0IT32SZ9_OT27aLadXH8PRiYNo5VTd4,3265
94
94
  langfun/core/llms/fake_test.py,sha256=2h13qkwEz_JR0mtUDPxdAhQo7MueXaFSwsD2DIRDW9g,7653
95
- langfun/core/llms/gemini.py,sha256=ij3NJHhAcs8-H4H2P4ny78q5L9iAmjQC4cu8nUyoPDA,25591
95
+ langfun/core/llms/gemini.py,sha256=JCxwTDdOBBhtME_s-wxV3-fOREIkQ-uMOVYFg09RmfQ,25589
96
96
  langfun/core/llms/gemini_test.py,sha256=Ve9X2Wvwu9wVFHpKZDP-qoM1_hzB4kgt6_HR9wxtNkg,7592
97
97
  langfun/core/llms/google_genai.py,sha256=YjvyasibmXYPFr_sxdrIdHDPHfaNzMCiJjWJs0iQyms,5188
98
98
  langfun/core/llms/google_genai_test.py,sha256=NKNtpebArQ9ZR7Qsnhd2prFIpMjleojy6o6VMXkJ1zY,1502
@@ -133,16 +133,16 @@ langfun/core/structured/description.py,sha256=6BztYOiucPkF4CrTQtPLPJo1gN2dwnKmaJ
133
133
  langfun/core/structured/description_test.py,sha256=UxaXnKKP7TnyPDPUyf3U-zPE0TvLlIP6DGr8thjcePw,7365
134
134
  langfun/core/structured/function_generation.py,sha256=g7AOR_e8HxFU6n6Df750aGkgMgV1KExLZMAz0yd5Agg,8555
135
135
  langfun/core/structured/function_generation_test.py,sha256=LaXYDXf9GlqUrR6v_gtmK_H4kxzonmU7SYbn7XXMgjU,12128
136
- langfun/core/structured/mapping.py,sha256=gxdcYQP9yqbDRtiJQ1RRAOrKHiCr0h6xBYLCRKE4I3c,13723
136
+ langfun/core/structured/mapping.py,sha256=iraHpcEeF_iuEX2eoTsLGwTHHvxqp2gNDjoMf98l0Kk,13941
137
137
  langfun/core/structured/mapping_test.py,sha256=OntYvfDitAf0tAnzQty3YS90vyEn6FY1Mi93r_ViEk8,9594
138
138
  langfun/core/structured/parsing.py,sha256=MGvI7ypXlwfzr5XB8_TFU9Ei0_5reYqkWkv64eAy0EA,12015
139
139
  langfun/core/structured/parsing_test.py,sha256=V8Cj1tJK4Lxv_b0YQj6-2hzXZgnYNBa2JR7rOLRBKoQ,22346
140
- langfun/core/structured/querying.py,sha256=v-C8cU4LNFPwVSVgfO5PFyYxKCTHHh6SdbaR5V5MKKs,30938
141
- langfun/core/structured/querying_test.py,sha256=6jN3oOSpVEBIlISrCUJtZfY6sBHahF_EBRUEhNNlzW8,40797
142
- langfun/core/structured/schema.py,sha256=UTonddBx3hVr0Zhm_38jqd8khTSXWy-bkk8l1YOUdLA,28797
143
- langfun/core/structured/schema_generation.py,sha256=3AcuKvv3VOtKY5zMVqODrxfOuDxzoZtGeBxHlOWDOWw,5308
140
+ langfun/core/structured/querying.py,sha256=7QvM4TS57O5kDCty6H8leWXfZxcN5ugWV-4bmdDABC0,38006
141
+ langfun/core/structured/querying_test.py,sha256=AXIVamBeKvby10zogjZl_wqtBopbpud-NNEZlqfLyqY,49766
142
+ langfun/core/structured/schema.py,sha256=r_ewdRMsALVOdnvGSeYBcz2-VJ_3_nMxY4GtzUHCYUU,29111
143
+ langfun/core/structured/schema_generation.py,sha256=pEWeTd8tQWYnEHukas6GVl4uGerLsQ2aNybtnm4Qgxc,5352
144
144
  langfun/core/structured/schema_generation_test.py,sha256=RM9s71kMNg2jTePwInkiW9fK1ACN37eyPeF8OII-0zw,2950
145
- langfun/core/structured/schema_test.py,sha256=pW0uoriwE_F6VH2DlAopeXlltcLBP_xnf8DA7QhVroc,26409
145
+ langfun/core/structured/schema_test.py,sha256=H42ZZdPi8CIv7WzrnXwMwQQaPQxlmDSY31pfqQs-Xqw,26567
146
146
  langfun/core/structured/scoring.py,sha256=Y7Jqs5VVjUQLF_9Z1uIY_dw5zasv2FF52Cz-cxGMsro,5857
147
147
  langfun/core/structured/scoring_test.py,sha256=QvlwDAzwuamKL5tCotm1L3Sx0cs3idoNK4aIEhaO4Yk,2272
148
148
  langfun/core/structured/tokenization.py,sha256=-b4_693quHeYn2AqndwucuXNmhd5NVXVTU3mmDane98,2189
@@ -156,8 +156,8 @@ langfun/core/templates/demonstration.py,sha256=vCrgYubdZM5Umqcgp8NUVGXgr4P_c-fik
156
156
  langfun/core/templates/demonstration_test.py,sha256=SafcDQ0WgI7pw05EmPI2S4v1t3ABKzup8jReCljHeK4,2162
157
157
  langfun/core/templates/selfplay.py,sha256=yhgrJbiYwq47TgzThmHrDQTF4nDrTI09CWGhuQPNv-s,2273
158
158
  langfun/core/templates/selfplay_test.py,sha256=Ot__1P1M8oJfoTp-M9-PQ6HUXqZKyMwvZ5f7yQ3yfyM,2326
159
- langfun-0.1.2.dev202505130804.dist-info/licenses/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
160
- langfun-0.1.2.dev202505130804.dist-info/METADATA,sha256=i-rMyyw0gOG8YgoQmvMEXZUGF9OPziH59QA8SJpLS4g,8178
161
- langfun-0.1.2.dev202505130804.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
162
- langfun-0.1.2.dev202505130804.dist-info/top_level.txt,sha256=RhlEkHxs1qtzmmtWSwYoLVJAc1YrbPtxQ52uh8Z9VvY,8
163
- langfun-0.1.2.dev202505130804.dist-info/RECORD,,
159
+ langfun-0.1.2.dev202505150805.dist-info/licenses/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
160
+ langfun-0.1.2.dev202505150805.dist-info/METADATA,sha256=O9L1gbEi6xg41c0yHT45Pla-2HS9u_5f4f04flDUcIw,8178
161
+ langfun-0.1.2.dev202505150805.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
162
+ langfun-0.1.2.dev202505150805.dist-info/top_level.txt,sha256=RhlEkHxs1qtzmmtWSwYoLVJAc1YrbPtxQ52uh8Z9VvY,8
163
+ langfun-0.1.2.dev202505150805.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.4.0)
2
+ Generator: setuptools (80.7.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5