langfun 0.1.2.dev202411090804__py3-none-any.whl → 0.1.2.dev202411140804__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.
- langfun/core/console.py +10 -2
- langfun/core/console_test.py +17 -0
- langfun/core/eval/__init__.py +2 -0
- langfun/core/eval/v2/__init__.py +38 -0
- langfun/core/eval/v2/checkpointing.py +135 -0
- langfun/core/eval/v2/checkpointing_test.py +89 -0
- langfun/core/eval/v2/evaluation.py +627 -0
- langfun/core/eval/v2/evaluation_test.py +156 -0
- langfun/core/eval/v2/example.py +295 -0
- langfun/core/eval/v2/example_test.py +114 -0
- langfun/core/eval/v2/experiment.py +949 -0
- langfun/core/eval/v2/experiment_test.py +304 -0
- langfun/core/eval/v2/metric_values.py +156 -0
- langfun/core/eval/v2/metric_values_test.py +80 -0
- langfun/core/eval/v2/metrics.py +357 -0
- langfun/core/eval/v2/metrics_test.py +203 -0
- langfun/core/eval/v2/progress.py +348 -0
- langfun/core/eval/v2/progress_test.py +82 -0
- langfun/core/eval/v2/progress_tracking.py +209 -0
- langfun/core/eval/v2/progress_tracking_test.py +56 -0
- langfun/core/eval/v2/reporting.py +144 -0
- langfun/core/eval/v2/reporting_test.py +41 -0
- langfun/core/eval/v2/runners.py +417 -0
- langfun/core/eval/v2/runners_test.py +311 -0
- langfun/core/eval/v2/test_helper.py +80 -0
- langfun/core/language_model.py +122 -11
- langfun/core/language_model_test.py +97 -4
- langfun/core/llms/__init__.py +3 -0
- langfun/core/llms/compositional.py +101 -0
- langfun/core/llms/compositional_test.py +73 -0
- langfun/core/llms/vertexai.py +4 -4
- {langfun-0.1.2.dev202411090804.dist-info → langfun-0.1.2.dev202411140804.dist-info}/METADATA +1 -1
- {langfun-0.1.2.dev202411090804.dist-info → langfun-0.1.2.dev202411140804.dist-info}/RECORD +36 -12
- {langfun-0.1.2.dev202411090804.dist-info → langfun-0.1.2.dev202411140804.dist-info}/WHEEL +1 -1
- {langfun-0.1.2.dev202411090804.dist-info → langfun-0.1.2.dev202411140804.dist-info}/LICENSE +0 -0
- {langfun-0.1.2.dev202411090804.dist-info → langfun-0.1.2.dev202411140804.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,101 @@
|
|
1
|
+
# Copyright 2024 The Langfun Authors
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
"""Compositions of different LLM models."""
|
15
|
+
import random
|
16
|
+
from typing import Annotated
|
17
|
+
|
18
|
+
import langfun.core as lf
|
19
|
+
import pyglove as pg
|
20
|
+
|
21
|
+
|
22
|
+
@pg.use_init_args(['candidates', 'seed'])
|
23
|
+
class RandomChoice(lf.LanguageModel):
|
24
|
+
"""Random choice of a list of LLM models."""
|
25
|
+
|
26
|
+
candidates: Annotated[
|
27
|
+
list[lf.LanguageModel],
|
28
|
+
(
|
29
|
+
'A list of LLMs as candidates to choose from.'
|
30
|
+
)
|
31
|
+
]
|
32
|
+
|
33
|
+
seed: Annotated[
|
34
|
+
int,
|
35
|
+
(
|
36
|
+
'The random seed to use for the random choice.'
|
37
|
+
)
|
38
|
+
] = 0
|
39
|
+
|
40
|
+
def _on_bound(self):
|
41
|
+
super()._on_bound()
|
42
|
+
self._rand = random.Random(self.seed)
|
43
|
+
# Applying sampling options to all candidates.
|
44
|
+
parent_non_default = self.sampling_options.sym_nondefault()
|
45
|
+
if parent_non_default:
|
46
|
+
for c in self.candidates:
|
47
|
+
c.sampling_options.rebind(
|
48
|
+
parent_non_default, notify_parents=False, raise_on_no_change=False
|
49
|
+
)
|
50
|
+
|
51
|
+
@property
|
52
|
+
def model_id(self) -> str:
|
53
|
+
model_ids = ', '.join(
|
54
|
+
sorted(c.model_id for c in self.candidates)
|
55
|
+
)
|
56
|
+
return f'RandomChoice({model_ids})'
|
57
|
+
|
58
|
+
@property
|
59
|
+
def resource_id(self) -> str:
|
60
|
+
resource_ids = ', '.join(
|
61
|
+
sorted(c.resource_id for c in self.candidates)
|
62
|
+
)
|
63
|
+
return f'RandomChoice({resource_ids})'
|
64
|
+
|
65
|
+
def _select_lm(self) -> lf.LanguageModel:
|
66
|
+
"""Selects a random LLM from the candidates."""
|
67
|
+
return self._rand.choice(self.candidates)
|
68
|
+
|
69
|
+
def sample(
|
70
|
+
self,
|
71
|
+
prompts: list[str | lf.Message],
|
72
|
+
*,
|
73
|
+
cache_seed: int = 0,
|
74
|
+
**kwargs,
|
75
|
+
) -> list[lf.LMSamplingResult]:
|
76
|
+
return self._select_lm().sample(
|
77
|
+
prompts, cache_seed=cache_seed, **kwargs
|
78
|
+
)
|
79
|
+
|
80
|
+
def __call__(
|
81
|
+
self, prompt: lf.Message, *, cache_seed: int = 0, **kwargs
|
82
|
+
) -> lf.Message:
|
83
|
+
return self._select_lm()(prompt, cache_seed=cache_seed, **kwargs)
|
84
|
+
|
85
|
+
def score(
|
86
|
+
self,
|
87
|
+
prompt: str | lf.Message | list[lf.Message],
|
88
|
+
completions: list[str | lf.Message],
|
89
|
+
**kwargs,
|
90
|
+
) -> list[lf.LMScoringResult]:
|
91
|
+
return self._select_lm().score(prompt, completions, **kwargs)
|
92
|
+
|
93
|
+
def tokenize(
|
94
|
+
self,
|
95
|
+
prompt: str | lf.Message,
|
96
|
+
**kwargs,
|
97
|
+
) -> list[tuple[str | bytes, int]]:
|
98
|
+
return self._select_lm().tokenize(prompt, **kwargs)
|
99
|
+
|
100
|
+
def _sample(self, *arg, **kwargs):
|
101
|
+
assert False, 'Should never trigger.'
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# Copyright 2024 The Langfun Authors
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
"""Tests for compositional models."""
|
15
|
+
import unittest
|
16
|
+
|
17
|
+
import langfun.core as lf
|
18
|
+
from langfun.core.llms import compositional
|
19
|
+
from langfun.core.llms import fake
|
20
|
+
|
21
|
+
|
22
|
+
class RandomChoiceTest(unittest.TestCase):
|
23
|
+
|
24
|
+
def test_basic(self):
|
25
|
+
lm = compositional.RandomChoice([
|
26
|
+
fake.StaticResponse('hi'),
|
27
|
+
fake.StaticSequence(['hello', 'world'])
|
28
|
+
])
|
29
|
+
self.assertEqual(
|
30
|
+
lm.model_id,
|
31
|
+
'RandomChoice(StaticResponse, StaticSequence)'
|
32
|
+
)
|
33
|
+
self.assertEqual(
|
34
|
+
lm.resource_id,
|
35
|
+
'RandomChoice(StaticResponse, StaticSequence)'
|
36
|
+
)
|
37
|
+
self.assertEqual(
|
38
|
+
[lm('a'), lm('b'), lm('c')],
|
39
|
+
['hello', 'world', 'hi']
|
40
|
+
)
|
41
|
+
lm = lm.clone()
|
42
|
+
self.assertEqual(
|
43
|
+
[
|
44
|
+
x.samples[0].response for x in [
|
45
|
+
lm.sample(['a'])[0],
|
46
|
+
lm.sample(['b'])[0],
|
47
|
+
lm.sample(['c'])[0],
|
48
|
+
]
|
49
|
+
],
|
50
|
+
['hello', 'world', 'hi']
|
51
|
+
)
|
52
|
+
self.assertEqual(
|
53
|
+
lm.score('hello', ['world']),
|
54
|
+
[lf.LMScoringResult(0.0)]
|
55
|
+
)
|
56
|
+
self.assertEqual(
|
57
|
+
lm.tokenize('hello'),
|
58
|
+
[('hello', 0)]
|
59
|
+
)
|
60
|
+
|
61
|
+
def test_sampling_options(self):
|
62
|
+
lm = compositional.RandomChoice([
|
63
|
+
fake.StaticResponse('hi'),
|
64
|
+
fake.StaticSequence(['hello', 'world'])
|
65
|
+
], temperature=0.5)
|
66
|
+
self.assertEqual(
|
67
|
+
lm.candidates[0].sampling_options.temperature,
|
68
|
+
0.5
|
69
|
+
)
|
70
|
+
|
71
|
+
|
72
|
+
if __name__ == '__main__':
|
73
|
+
unittest.main()
|
langfun/core/llms/vertexai.py
CHANGED
@@ -51,13 +51,13 @@ AVGERAGE_CHARS_PER_TOEKN = 4
|
|
51
51
|
SUPPORTED_MODELS_AND_SETTINGS = {
|
52
52
|
'gemini-1.5-pro-001': pg.Dict(
|
53
53
|
api='gemini',
|
54
|
-
rpm=
|
54
|
+
rpm=100,
|
55
55
|
cost_per_1k_input_chars=0.0003125,
|
56
56
|
cost_per_1k_output_chars=0.00125,
|
57
57
|
),
|
58
58
|
'gemini-1.5-pro-002': pg.Dict(
|
59
59
|
api='gemini',
|
60
|
-
rpm=
|
60
|
+
rpm=100,
|
61
61
|
cost_per_1k_input_chars=0.0003125,
|
62
62
|
cost_per_1k_output_chars=0.00125,
|
63
63
|
),
|
@@ -75,7 +75,7 @@ SUPPORTED_MODELS_AND_SETTINGS = {
|
|
75
75
|
),
|
76
76
|
'gemini-1.5-pro': pg.Dict(
|
77
77
|
api='gemini',
|
78
|
-
rpm=
|
78
|
+
rpm=100,
|
79
79
|
cost_per_1k_input_chars=0.0003125,
|
80
80
|
cost_per_1k_output_chars=0.00125,
|
81
81
|
),
|
@@ -87,7 +87,7 @@ SUPPORTED_MODELS_AND_SETTINGS = {
|
|
87
87
|
),
|
88
88
|
'gemini-1.5-pro-latest': pg.Dict(
|
89
89
|
api='gemini',
|
90
|
-
rpm=
|
90
|
+
rpm=100,
|
91
91
|
cost_per_1k_input_chars=0.0003125,
|
92
92
|
cost_per_1k_output_chars=0.00125,
|
93
93
|
),
|
@@ -4,12 +4,12 @@ langfun/core/component.py,sha256=HVrEoTL1Y01iqOHC3FYdbAOnffqfHHtGJXoK1vkdEwo,115
|
|
4
4
|
langfun/core/component_test.py,sha256=sG-T2wpvBfHqWGZE7sc4NayJj2aj5QFBzSwFiwrGEIc,10376
|
5
5
|
langfun/core/concurrent.py,sha256=QMNYhB_PyjvVJtabMokpzotZRYvyE9iYu2QsgwDk7M4,29552
|
6
6
|
langfun/core/concurrent_test.py,sha256=ILlAjfhV84yJfY1QLe3N9aYry1sCjY-ywfIlXGafenI,17336
|
7
|
-
langfun/core/console.py,sha256=
|
8
|
-
langfun/core/console_test.py,sha256=
|
7
|
+
langfun/core/console.py,sha256=Fra2_MSWZbFh6rY8HZoYgpGLsrNvhaGuL03znOwQbhM,2529
|
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=fKIAqcSNI_7M6nwoZW77HEam8Oa6vcWhsCNgVJanzb4,8822
|
11
|
-
langfun/core/language_model.py,sha256=
|
12
|
-
langfun/core/language_model_test.py,sha256=
|
11
|
+
langfun/core/language_model.py,sha256=UtLvclKx55_SAKZ-ajaquudLxKorTARAeZFme5IaPi8,33499
|
12
|
+
langfun/core/language_model_test.py,sha256=td81wm4zFPeMb16nmIuIZ6eHtpYhH0k6IeiYLfGgR0o,31525
|
13
13
|
langfun/core/logging.py,sha256=uslllP0RTGN223oro1m4nZZ0bFppcL07OwbFKm2iG6k,7519
|
14
14
|
langfun/core/logging_test.py,sha256=b5bPTSUoYeICATaO6I8dOVumodwRbxSp1Oz96Sf3KcE,6104
|
15
15
|
langfun/core/memory.py,sha256=f-asN1F7Vehgdn_fK84v73GrEUOxRtaW934keutTKjk,2416
|
@@ -43,7 +43,7 @@ langfun/core/coding/python/parsing.py,sha256=LMg8REP4VDY0YQjtPAGNAW4rKlMNdSXF8m1
|
|
43
43
|
langfun/core/coding/python/parsing_test.py,sha256=9vAWF484kWIm6JZq8NFiMgKUDhXV-deRl1QMmNERfAA,7386
|
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
|
-
langfun/core/eval/__init__.py,sha256=
|
46
|
+
langfun/core/eval/__init__.py,sha256=OEXr1ZRuvLuhJJfuQ1ZWQ-SvYzjyrtiAAEogYaB7E6o,1933
|
47
47
|
langfun/core/eval/base.py,sha256=ajHUS_BdzBIDKEwAmMzne0lJi8HcDhPmyw_plO0p7G0,75814
|
48
48
|
langfun/core/eval/base_test.py,sha256=-LsIV9DXlDal0EnOlaWpibJvfef0NbxtZAm0OH_abAE,27189
|
49
49
|
langfun/core/eval/matching.py,sha256=UnjdM_ebPqXKJamY4lvL3AYxrMIz3LqkjRTnHJ5xsYc,9349
|
@@ -52,9 +52,33 @@ langfun/core/eval/patching.py,sha256=R0s2eAd1m97exQt06dmUL0V_MBG0W2Hxg7fhNB7cXW0
|
|
52
52
|
langfun/core/eval/patching_test.py,sha256=8kCd54Egjju22FMgtJuxEsrXkW8ifs-UUBHtrCG1L6w,4775
|
53
53
|
langfun/core/eval/scoring.py,sha256=B69IsIxiPs1xZcOBFIhZF70YmDue2Siik-CPL2bh33s,6254
|
54
54
|
langfun/core/eval/scoring_test.py,sha256=O8olHbrUEg60gMxwOkWzKBJZpZoUlmVnBANX5Se2SXM,4546
|
55
|
-
langfun/core/
|
55
|
+
langfun/core/eval/v2/__init__.py,sha256=XMpkKjd_vL_qzCQYPAwR1NNO0T_Zo5j4kP3eYL-EJLc,1428
|
56
|
+
langfun/core/eval/v2/checkpointing.py,sha256=AhChb5U0fTd0NmDHaIaVE9qJ8zFEe7Lhq7KjIt1D2pQ,3766
|
57
|
+
langfun/core/eval/v2/checkpointing_test.py,sha256=xU5asikwUn-rCmNd93ssvT6gDiKvvWogYKQa0r_TqOM,3046
|
58
|
+
langfun/core/eval/v2/evaluation.py,sha256=hausa1NnUGi56KNrucd61qv9km1eDvcj2GBqiJzb0FA,19371
|
59
|
+
langfun/core/eval/v2/evaluation_test.py,sha256=hh6L2HhQPQ6NBv1pXKcNkYraNcV9MLuJ--69t9jbmaI,5846
|
60
|
+
langfun/core/eval/v2/example.py,sha256=fURrvdNmMsVMqoEErcsmLmC6Xq3ny16dYsnLH8HVlcY,9626
|
61
|
+
langfun/core/eval/v2/example_test.py,sha256=WcJmU7IQQXvjFia63mokySC4CqxzVL9Wso1sC5F0YK8,3032
|
62
|
+
langfun/core/eval/v2/experiment.py,sha256=xkROLFYj2Nf6G9wunfVx6nEhdMX_560hRSsB8qT3S_Q,28787
|
63
|
+
langfun/core/eval/v2/experiment_test.py,sha256=R0ujPSluvDu5gwxGpiSWJ3eTiVpfleJDwwT1pXN8Nvg,8933
|
64
|
+
langfun/core/eval/v2/metric_values.py,sha256=_B905bC-jxrYPLSEcP2M8MaHZOVMz_bVrUw8YC4arCE,4660
|
65
|
+
langfun/core/eval/v2/metric_values_test.py,sha256=ab2oF_HsIwrSy459108ggyjgefHSPn8UVILR4dRwx14,2634
|
66
|
+
langfun/core/eval/v2/metrics.py,sha256=bl8i6u-ZHRBz4hAc3LzsZ2Dc7ZRQcuTYeUhhH-GxfF0,10628
|
67
|
+
langfun/core/eval/v2/metrics_test.py,sha256=p4FzLJsE8XAzAQuyP9hfEf9YeKWZ__PO_ue8a9P0-cc,6082
|
68
|
+
langfun/core/eval/v2/progress.py,sha256=azZgssQgNdv3IgjKEaQBuGI5ucFDNbdi02P4z_nQ8GE,10292
|
69
|
+
langfun/core/eval/v2/progress_test.py,sha256=YU7VHzmy5knPZwj9vpBN3rQQH2tukj9eKHkuBCI62h8,2540
|
70
|
+
langfun/core/eval/v2/progress_tracking.py,sha256=1imwSbllxHWG3zYrzo2NvytBZsVtjqum6bmXGGsvT1E,5987
|
71
|
+
langfun/core/eval/v2/progress_tracking_test.py,sha256=eY2HvZeEXDA5Zyfi2m5NDWO_9kSfQsaAOEcIhkSbWCY,1874
|
72
|
+
langfun/core/eval/v2/reporting.py,sha256=TGkli1IDwqfqsCJ_WslOMGk_24JDg7oRRTGXlAJlWpc,4361
|
73
|
+
langfun/core/eval/v2/reporting_test.py,sha256=JxffbUPWInUyLjo-AQVFrllga884Mdfm05R86FtxSss,1482
|
74
|
+
langfun/core/eval/v2/runners.py,sha256=2OHAVTbqq9hZ3qZpUEvQ--9X-Cr_z8Ghc3MRXCfclpk,13442
|
75
|
+
langfun/core/eval/v2/runners_test.py,sha256=s3GgWA-H9x0JyPhPZq2s9-5GXGHo5dSbDD-4faX0h_E,11164
|
76
|
+
langfun/core/eval/v2/test_helper.py,sha256=pDpZTBnWRR5xjJv3Uy3NWEzArqlL8FTMOgeR4C53F5M,2348
|
77
|
+
langfun/core/llms/__init__.py,sha256=i0m-fVpwuIN_Jno1M-5O9ikzbVbvXWJKFQZO22MFPq8,6272
|
56
78
|
langfun/core/llms/anthropic.py,sha256=XPQxjfe9O4b-CygCgqvQU0MPSfe1rU7uErNbo8zth7Q,13606
|
57
79
|
langfun/core/llms/anthropic_test.py,sha256=-2U4kc_pgBM7wqxu8RuxzyHPGww1EAWqKUvN4PW8Btw,8058
|
80
|
+
langfun/core/llms/compositional.py,sha256=csW_FLlgL-tpeyCOTVvfUQkMa_zCN5Y2I-YbSNuK27U,2872
|
81
|
+
langfun/core/llms/compositional_test.py,sha256=4eTnOer-DncRKGaIJW2ZQQMLnt5r2R0UIx_DYOvGAQo,2027
|
58
82
|
langfun/core/llms/fake.py,sha256=gCHBYBLvBCsC78HI1hpoqXCS-p1FMTgY1P1qh_sGBPk,3070
|
59
83
|
langfun/core/llms/fake_test.py,sha256=2h13qkwEz_JR0mtUDPxdAhQo7MueXaFSwsD2DIRDW9g,7653
|
60
84
|
langfun/core/llms/google_genai.py,sha256=btUIfWteBoj8Jl0j8d3e8hyI6p3Biq4rldlQYctVQfg,10936
|
@@ -67,7 +91,7 @@ langfun/core/llms/openai.py,sha256=qrAiJxE0tS7ZqjaVzRgVJKtMtoo1Z5TYpvi5ikTwPpw,2
|
|
67
91
|
langfun/core/llms/openai_test.py,sha256=_8cd3VRNEUfE0-Ko1RiM6MlC5hjalRj7nYTJNhG1p3E,18907
|
68
92
|
langfun/core/llms/rest.py,sha256=sWbYUV8S3SuOg9giq7xwD-xDRfaF7NP_ig7bI52-Rj4,3442
|
69
93
|
langfun/core/llms/rest_test.py,sha256=NZ3Nf0XQVpT9kLP5cBVo_yBHLI7vWTYhWQxYEJVMGs4,3472
|
70
|
-
langfun/core/llms/vertexai.py,sha256
|
94
|
+
langfun/core/llms/vertexai.py,sha256=-KB880Ovab6CQqI-Y5Y6V7RlEA0tAIazmnnG74Ebp4A,18866
|
71
95
|
langfun/core/llms/vertexai_test.py,sha256=7uBVOF5VF86xQ9HFAbSTh4J-0NjYLnuotBS1YRm-vgw,10529
|
72
96
|
langfun/core/llms/cache/__init__.py,sha256=QAo3InUMDM_YpteNnVCSejI4zOsnjSMWKJKzkb3VY64,993
|
73
97
|
langfun/core/llms/cache/base.py,sha256=rt3zwmyw0y9jsSGW-ZbV1vAfLxQ7_3AVk0l2EySlse4,3918
|
@@ -119,8 +143,8 @@ langfun/core/templates/demonstration.py,sha256=vCrgYubdZM5Umqcgp8NUVGXgr4P_c-fik
|
|
119
143
|
langfun/core/templates/demonstration_test.py,sha256=SafcDQ0WgI7pw05EmPI2S4v1t3ABKzup8jReCljHeK4,2162
|
120
144
|
langfun/core/templates/selfplay.py,sha256=yhgrJbiYwq47TgzThmHrDQTF4nDrTI09CWGhuQPNv-s,2273
|
121
145
|
langfun/core/templates/selfplay_test.py,sha256=Ot__1P1M8oJfoTp-M9-PQ6HUXqZKyMwvZ5f7yQ3yfyM,2326
|
122
|
-
langfun-0.1.2.
|
123
|
-
langfun-0.1.2.
|
124
|
-
langfun-0.1.2.
|
125
|
-
langfun-0.1.2.
|
126
|
-
langfun-0.1.2.
|
146
|
+
langfun-0.1.2.dev202411140804.dist-info/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
|
147
|
+
langfun-0.1.2.dev202411140804.dist-info/METADATA,sha256=LNyNk_qsiVz-CAbbtkN4jzdSwDWGhlR5RkefV6lclFA,8890
|
148
|
+
langfun-0.1.2.dev202411140804.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
|
149
|
+
langfun-0.1.2.dev202411140804.dist-info/top_level.txt,sha256=RhlEkHxs1qtzmmtWSwYoLVJAc1YrbPtxQ52uh8Z9VvY,8
|
150
|
+
langfun-0.1.2.dev202411140804.dist-info/RECORD,,
|
File without changes
|
{langfun-0.1.2.dev202411090804.dist-info → langfun-0.1.2.dev202411140804.dist-info}/top_level.txt
RENAMED
File without changes
|