edsl 0.1.30.dev5__py3-none-any.whl → 0.1.31__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.
- edsl/__version__.py +1 -1
- edsl/agents/Invigilator.py +7 -2
- edsl/agents/PromptConstructionMixin.py +18 -1
- edsl/config.py +4 -0
- edsl/conjure/Conjure.py +6 -0
- edsl/coop/coop.py +4 -0
- edsl/coop/utils.py +9 -1
- edsl/data/CacheHandler.py +3 -4
- edsl/enums.py +2 -0
- edsl/inference_services/DeepInfraService.py +6 -91
- edsl/inference_services/GroqService.py +18 -0
- edsl/inference_services/InferenceServicesCollection.py +13 -5
- edsl/inference_services/OpenAIService.py +64 -21
- edsl/inference_services/registry.py +2 -1
- edsl/jobs/Jobs.py +80 -33
- edsl/jobs/buckets/TokenBucket.py +15 -7
- edsl/jobs/interviews/Interview.py +41 -19
- edsl/jobs/interviews/InterviewExceptionEntry.py +101 -0
- edsl/jobs/interviews/InterviewTaskBuildingMixin.py +58 -40
- edsl/jobs/interviews/interview_exception_tracking.py +68 -10
- edsl/jobs/runners/JobsRunnerAsyncio.py +112 -81
- edsl/jobs/runners/JobsRunnerStatusData.py +0 -237
- edsl/jobs/runners/JobsRunnerStatusMixin.py +291 -35
- edsl/jobs/tasks/QuestionTaskCreator.py +2 -3
- edsl/jobs/tasks/TaskCreators.py +8 -2
- edsl/jobs/tasks/TaskHistory.py +145 -1
- edsl/language_models/LanguageModel.py +133 -75
- edsl/language_models/ModelList.py +8 -2
- edsl/language_models/registry.py +16 -0
- edsl/questions/QuestionFunctional.py +8 -7
- edsl/questions/QuestionMultipleChoice.py +15 -12
- edsl/questions/QuestionNumerical.py +0 -1
- edsl/questions/descriptors.py +6 -4
- edsl/results/DatasetExportMixin.py +185 -78
- edsl/results/Result.py +13 -11
- edsl/results/Results.py +19 -16
- edsl/results/ResultsToolsMixin.py +1 -1
- edsl/scenarios/Scenario.py +14 -0
- edsl/scenarios/ScenarioList.py +59 -21
- edsl/scenarios/ScenarioListExportMixin.py +16 -5
- edsl/scenarios/ScenarioListPdfMixin.py +3 -0
- edsl/surveys/Survey.py +11 -8
- {edsl-0.1.30.dev5.dist-info → edsl-0.1.31.dist-info}/METADATA +4 -2
- {edsl-0.1.30.dev5.dist-info → edsl-0.1.31.dist-info}/RECORD +46 -44
- {edsl-0.1.30.dev5.dist-info → edsl-0.1.31.dist-info}/LICENSE +0 -0
- {edsl-0.1.30.dev5.dist-info → edsl-0.1.31.dist-info}/WHEEL +0 -0
edsl/scenarios/ScenarioList.py
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
"""A list of Scenarios to be used in a survey."""
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
|
+
from typing import Any, Optional, Union, List, Callable
|
4
5
|
import csv
|
5
6
|
import random
|
6
7
|
from collections import UserList, Counter
|
7
8
|
from collections.abc import Iterable
|
9
|
+
|
8
10
|
from simpleeval import EvalWithCompoundTypes
|
9
|
-
|
11
|
+
|
10
12
|
from edsl.Base import Base
|
11
13
|
from edsl.utilities.decorators import add_edsl_version, remove_edsl_version
|
12
14
|
from edsl.scenarios.Scenario import Scenario
|
@@ -58,7 +60,13 @@ class ScenarioList(Base, UserList, ScenarioListMixin):
|
|
58
60
|
return f"ScenarioList({self.data})"
|
59
61
|
|
60
62
|
def __mul__(self, other: ScenarioList) -> ScenarioList:
|
61
|
-
"""Takes the cross product of two ScenarioLists.
|
63
|
+
"""Takes the cross product of two ScenarioLists.
|
64
|
+
|
65
|
+
>>> s1 = ScenarioList.from_list("a", [1, 2])
|
66
|
+
>>> s2 = ScenarioList.from_list("b", [3, 4])
|
67
|
+
>>> s1 * s2
|
68
|
+
ScenarioList([Scenario({'a': 1, 'b': 3}), Scenario({'a': 1, 'b': 4}), Scenario({'a': 2, 'b': 3}), Scenario({'a': 2, 'b': 4})])
|
69
|
+
"""
|
62
70
|
from itertools import product
|
63
71
|
|
64
72
|
new_sl = []
|
@@ -79,7 +87,12 @@ class ScenarioList(Base, UserList, ScenarioListMixin):
|
|
79
87
|
return self.__mul__(other)
|
80
88
|
|
81
89
|
def shuffle(self, seed: Optional[str] = "edsl") -> ScenarioList:
|
82
|
-
"""Shuffle the ScenarioList.
|
90
|
+
"""Shuffle the ScenarioList.
|
91
|
+
|
92
|
+
>>> s = ScenarioList.from_list("a", [1,2,3,4])
|
93
|
+
>>> s.shuffle()
|
94
|
+
ScenarioList([Scenario({'a': 3}), Scenario({'a': 4}), Scenario({'a': 1}), Scenario({'a': 2})])
|
95
|
+
"""
|
83
96
|
random.seed(seed)
|
84
97
|
random.shuffle(self.data)
|
85
98
|
return self
|
@@ -107,10 +120,14 @@ class ScenarioList(Base, UserList, ScenarioListMixin):
|
|
107
120
|
return dict(Counter([scenario[field] for scenario in self]))
|
108
121
|
|
109
122
|
def sample(self, n: int, seed="edsl") -> ScenarioList:
|
110
|
-
"""Return a random sample from the ScenarioList
|
123
|
+
"""Return a random sample from the ScenarioList
|
111
124
|
|
112
|
-
|
113
|
-
|
125
|
+
>>> s = ScenarioList.from_list("a", [1,2,3,4,5,6])
|
126
|
+
>>> s.sample(3)
|
127
|
+
ScenarioList([Scenario({'a': 2}), Scenario({'a': 1}), Scenario({'a': 3})])
|
128
|
+
"""
|
129
|
+
|
130
|
+
random.seed(seed)
|
114
131
|
|
115
132
|
return ScenarioList(random.sample(self.data, n))
|
116
133
|
|
@@ -136,7 +153,9 @@ class ScenarioList(Base, UserList, ScenarioListMixin):
|
|
136
153
|
new_scenarios.append(new_scenario)
|
137
154
|
return ScenarioList(new_scenarios)
|
138
155
|
|
139
|
-
def mutate(
|
156
|
+
def mutate(
|
157
|
+
self, new_var_string: str, functions_dict: Optional[dict[str, Callable]] = None
|
158
|
+
) -> ScenarioList:
|
140
159
|
"""
|
141
160
|
Return a new ScenarioList with a new variable added.
|
142
161
|
|
@@ -145,6 +164,7 @@ class ScenarioList(Base, UserList, ScenarioListMixin):
|
|
145
164
|
>>> s = ScenarioList([Scenario({'a': 1, 'b': 2}), Scenario({'a': 1, 'b': 1})])
|
146
165
|
>>> s.mutate("c = a + b")
|
147
166
|
ScenarioList([Scenario({'a': 1, 'b': 2, 'c': 3}), Scenario({'a': 1, 'b': 1, 'c': 2})])
|
167
|
+
|
148
168
|
"""
|
149
169
|
if "=" not in new_var_string:
|
150
170
|
raise Exception(
|
@@ -222,6 +242,16 @@ class ScenarioList(Base, UserList, ScenarioListMixin):
|
|
222
242
|
|
223
243
|
return ScenarioList(new_data)
|
224
244
|
|
245
|
+
def from_urls(self, urls: list[str], field_name: Optional[str] = "text") -> ScenarioList:
|
246
|
+
"""Create a ScenarioList from a list of URLs.
|
247
|
+
|
248
|
+
:param urls: A list of URLs.
|
249
|
+
:param field_name: The name of the field to store the text from the URLs.
|
250
|
+
|
251
|
+
|
252
|
+
"""
|
253
|
+
return ScenarioList([Scenario.from_url(url, field_name) for url in urls])
|
254
|
+
|
225
255
|
def select(self, *fields) -> ScenarioList:
|
226
256
|
"""
|
227
257
|
Selects scenarios with only the references fields.
|
@@ -264,11 +294,19 @@ class ScenarioList(Base, UserList, ScenarioListMixin):
|
|
264
294
|
return cls([Scenario({name: value}) for value in values])
|
265
295
|
|
266
296
|
def to_dataset(self) -> "Dataset":
|
297
|
+
"""
|
298
|
+
>>> s = ScenarioList.from_list("a", [1,2,3])
|
299
|
+
>>> s.to_dataset()
|
300
|
+
Dataset([{'a': [1, 2, 3]}])
|
301
|
+
>>> s = ScenarioList.from_list("a", [1,2,3]).add_list("b", [4,5,6])
|
302
|
+
>>> s.to_dataset()
|
303
|
+
Dataset([{'a': [1, 2, 3]}, {'b': [4, 5, 6]}])
|
304
|
+
"""
|
267
305
|
from edsl.results.Dataset import Dataset
|
268
306
|
|
269
307
|
keys = self[0].keys()
|
270
|
-
data = {key: [scenario[key] for scenario in self.data] for key in keys
|
271
|
-
return Dataset(
|
308
|
+
data = [{key: [scenario[key] for scenario in self.data]} for key in keys]
|
309
|
+
return Dataset(data)
|
272
310
|
|
273
311
|
def add_list(self, name, values) -> ScenarioList:
|
274
312
|
"""Add a list of values to a ScenarioList.
|
@@ -286,7 +324,7 @@ class ScenarioList(Base, UserList, ScenarioListMixin):
|
|
286
324
|
self.append(Scenario({name: value}))
|
287
325
|
return self
|
288
326
|
|
289
|
-
def add_value(self, name, value):
|
327
|
+
def add_value(self, name: str, value: Any) -> ScenarioList:
|
290
328
|
"""Add a value to all scenarios in a ScenarioList.
|
291
329
|
|
292
330
|
Example:
|
@@ -340,7 +378,7 @@ class ScenarioList(Base, UserList, ScenarioListMixin):
|
|
340
378
|
"""
|
341
379
|
return cls([Scenario(row) for row in df.to_dict(orient="records")])
|
342
380
|
|
343
|
-
def to_key_value(self, field, value=None) -> Union[dict, set]:
|
381
|
+
def to_key_value(self, field: str, value=None) -> Union[dict, set]:
|
344
382
|
"""Return the set of values in the field.
|
345
383
|
|
346
384
|
Example:
|
@@ -459,16 +497,16 @@ class ScenarioList(Base, UserList, ScenarioListMixin):
|
|
459
497
|
table.add_row(str(i), s.rich_print())
|
460
498
|
return table
|
461
499
|
|
462
|
-
def print(
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
):
|
469
|
-
|
470
|
-
|
471
|
-
|
500
|
+
# def print(
|
501
|
+
# self,
|
502
|
+
# format: Optional[str] = None,
|
503
|
+
# max_rows: Optional[int] = None,
|
504
|
+
# pretty_labels: Optional[dict] = None,
|
505
|
+
# filename: str = None,
|
506
|
+
# ):
|
507
|
+
# from edsl.utilities.interface import print_scenario_list
|
508
|
+
|
509
|
+
# print_scenario_list(self[:max_rows])
|
472
510
|
|
473
511
|
def __getitem__(self, key: Union[int, slice]) -> Any:
|
474
512
|
"""Return the item at the given index.
|
@@ -5,7 +5,7 @@ from edsl.results.DatasetExportMixin import DatasetExportMixin
|
|
5
5
|
|
6
6
|
|
7
7
|
def to_dataset(func):
|
8
|
-
"""Convert the
|
8
|
+
"""Convert the object to a Dataset object before calling the function."""
|
9
9
|
|
10
10
|
@wraps(func)
|
11
11
|
def wrapper(self, *args, **kwargs):
|
@@ -20,13 +20,24 @@ def to_dataset(func):
|
|
20
20
|
return wrapper
|
21
21
|
|
22
22
|
|
23
|
-
def
|
24
|
-
for attr_name, attr_value in
|
25
|
-
if callable(attr_value):
|
23
|
+
def decorate_methods_from_mixin(cls, mixin_cls):
|
24
|
+
for attr_name, attr_value in mixin_cls.__dict__.items():
|
25
|
+
if callable(attr_value) and not attr_name.startswith("__"):
|
26
26
|
setattr(cls, attr_name, to_dataset(attr_value))
|
27
27
|
return cls
|
28
28
|
|
29
29
|
|
30
|
-
|
30
|
+
# def decorate_all_methods(cls):
|
31
|
+
# for attr_name, attr_value in cls.__dict__.items():
|
32
|
+
# if callable(attr_value):
|
33
|
+
# setattr(cls, attr_name, to_dataset(attr_value))
|
34
|
+
# return cls
|
35
|
+
|
36
|
+
|
37
|
+
# @decorate_all_methods
|
31
38
|
class ScenarioListExportMixin(DatasetExportMixin):
|
32
39
|
"""Mixin class for exporting Results objects."""
|
40
|
+
|
41
|
+
def __init_subclass__(cls, **kwargs):
|
42
|
+
super().__init_subclass__(**kwargs)
|
43
|
+
decorate_methods_from_mixin(cls, DatasetExportMixin)
|
@@ -43,6 +43,9 @@ class ScenarioListPdfMixin:
|
|
43
43
|
|
44
44
|
@staticmethod
|
45
45
|
def extract_text_from_pdf(pdf_path):
|
46
|
+
from edsl import Scenario
|
47
|
+
|
48
|
+
# TODO: Add test case
|
46
49
|
# Ensure the file exists
|
47
50
|
if not os.path.exists(pdf_path):
|
48
51
|
raise FileNotFoundError(f"The file {pdf_path} does not exist.")
|
edsl/surveys/Survey.py
CHANGED
@@ -105,15 +105,15 @@ class Survey(SurveyExportMixin, SurveyFlowVisualizationMixin, Base):
|
|
105
105
|
from edsl.utilities.utilities import dict_hash
|
106
106
|
|
107
107
|
return dict_hash(self._to_dict())
|
108
|
-
|
108
|
+
|
109
109
|
def __add__(self, other: Survey) -> Survey:
|
110
110
|
"""Combine two surveys.
|
111
|
-
|
111
|
+
|
112
112
|
:param other: The other survey to combine with this one.
|
113
113
|
>>> s1 = Survey.example()
|
114
114
|
>>> from edsl import QuestionFreeText
|
115
115
|
>>> s2 = Survey([QuestionFreeText(question_text="What is your name?", question_name="yo")])
|
116
|
-
>>> s3 = s1 + s2
|
116
|
+
>>> s3 = s1 + s2
|
117
117
|
Traceback (most recent call last):
|
118
118
|
...
|
119
119
|
ValueError: ('Cannot combine two surveys with non-default rules.', "Please use the 'clear_non_default_rules' method to remove non-default rules from the survey.")
|
@@ -122,14 +122,17 @@ class Survey(SurveyExportMixin, SurveyFlowVisualizationMixin, Base):
|
|
122
122
|
4
|
123
123
|
|
124
124
|
"""
|
125
|
-
if
|
125
|
+
if (
|
126
|
+
len(self.rule_collection.non_default_rules) > 0
|
127
|
+
or len(other.rule_collection.non_default_rules) > 0
|
128
|
+
):
|
126
129
|
raise ValueError(
|
127
|
-
"Cannot combine two surveys with non-default rules.",
|
128
|
-
"Please use the 'clear_non_default_rules' method to remove non-default rules from the survey."
|
130
|
+
"Cannot combine two surveys with non-default rules.",
|
131
|
+
"Please use the 'clear_non_default_rules' method to remove non-default rules from the survey.",
|
129
132
|
)
|
130
133
|
|
131
134
|
return Survey(questions=self.questions + other.questions)
|
132
|
-
|
135
|
+
|
133
136
|
def clear_non_default_rules(self) -> Survey:
|
134
137
|
s = Survey()
|
135
138
|
for question in self.questions:
|
@@ -1181,5 +1184,5 @@ def main():
|
|
1181
1184
|
if __name__ == "__main__":
|
1182
1185
|
import doctest
|
1183
1186
|
|
1184
|
-
#doctest.testmod(optionflags=doctest.ELLIPSIS | doctest.SKIP)
|
1187
|
+
# doctest.testmod(optionflags=doctest.ELLIPSIS | doctest.SKIP)
|
1185
1188
|
doctest.testmod(optionflags=doctest.ELLIPSIS)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: edsl
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.31
|
4
4
|
Summary: Create and analyze LLM-based surveys
|
5
5
|
Home-page: https://www.expectedparrot.com/
|
6
6
|
License: MIT
|
@@ -19,10 +19,11 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
19
19
|
Requires-Dist: aiohttp (>=3.9.1,<4.0.0)
|
20
20
|
Requires-Dist: anthropic (>=0.23.1,<0.24.0)
|
21
21
|
Requires-Dist: black[jupyter] (>=24.4.2,<25.0.0)
|
22
|
+
Requires-Dist: groq (>=0.9.0,<0.10.0)
|
22
23
|
Requires-Dist: jinja2 (>=3.1.2,<4.0.0)
|
23
24
|
Requires-Dist: jupyter (>=1.0.0,<2.0.0)
|
24
25
|
Requires-Dist: markdown2 (>=2.4.11,<3.0.0)
|
25
|
-
Requires-Dist: matplotlib (>=3.8
|
26
|
+
Requires-Dist: matplotlib (>=3.8,<3.9)
|
26
27
|
Requires-Dist: nest-asyncio (>=1.5.9,<2.0.0)
|
27
28
|
Requires-Dist: numpy (>=1.22,<2.0)
|
28
29
|
Requires-Dist: openai (>=1.4.0,<2.0.0)
|
@@ -35,6 +36,7 @@ Requires-Dist: python-docx (>=1.1.0,<2.0.0)
|
|
35
36
|
Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
|
36
37
|
Requires-Dist: restrictedpython (>=7.1,<8.0)
|
37
38
|
Requires-Dist: rich (>=13.7.0,<14.0.0)
|
39
|
+
Requires-Dist: setuptools (<72.0)
|
38
40
|
Requires-Dist: simpleeval (>=0.9.13,<0.10.0)
|
39
41
|
Requires-Dist: sqlalchemy (>=2.0.23,<3.0.0)
|
40
42
|
Requires-Dist: tenacity (>=8.2.3,<9.0.0)
|
@@ -1,18 +1,18 @@
|
|
1
1
|
edsl/Base.py,sha256=ttNxUotSd9LSEJl2w6LdMtT78d0nMQvYDJ0q4JkqBfg,8945
|
2
2
|
edsl/BaseDiff.py,sha256=RoVEh52UJs22yMa7k7jv8se01G62jJNWnBzaZngo-Ug,8260
|
3
3
|
edsl/__init__.py,sha256=E6PkWI_owu8AUc4uJs2XWDVozqSbcRWzsIqf8_Kskho,1631
|
4
|
-
edsl/__version__.py,sha256=
|
4
|
+
edsl/__version__.py,sha256=i-fDEsQ0iAiPKXFaj9eERDqcxl3BqNnavaCEqpNxmVI,23
|
5
5
|
edsl/agents/Agent.py,sha256=qNJsQkN6HuTKqJrQbuUEgRX3Wo7Dwukle0oNWPi0UIE,27191
|
6
6
|
edsl/agents/AgentList.py,sha256=_MsdeOEgaANAceLIXwuLC22mwlBn0ruGX4GEqz8_SSY,9467
|
7
|
-
edsl/agents/Invigilator.py,sha256=
|
7
|
+
edsl/agents/Invigilator.py,sha256=8nv98bjfal6Q-GVmsxj5Isqn-GLqXDXEijSai3KAbgQ,10923
|
8
8
|
edsl/agents/InvigilatorBase.py,sha256=ncha1HF2V1Dz4f50Gekg6AzUXCD2Af82ztfSJZbgOHY,7469
|
9
|
-
edsl/agents/PromptConstructionMixin.py,sha256=
|
9
|
+
edsl/agents/PromptConstructionMixin.py,sha256=07RtPsaNOiJR-QIZWyr4F9VmArVcsRsWTkPuwhK2tXw,16659
|
10
10
|
edsl/agents/__init__.py,sha256=a3H1lxDwu9HR8fwh79C5DgxPSFv_bE2rzQ6y1D8Ba5c,80
|
11
11
|
edsl/agents/descriptors.py,sha256=m8ND3-2-JbgNX1HGakBNLIeemwsgYa1mQxYO9GW33hw,2934
|
12
12
|
edsl/base/Base.py,sha256=DShsfI6A2ojg42muPFpVtUgTX33pnqT5vtN0SRlr-9Q,8866
|
13
|
-
edsl/config.py,sha256
|
13
|
+
edsl/config.py,sha256=EE4NFLtBr5wbUdf6iOGFZQ1so26gzjVHUcu_IfDqjqw,5770
|
14
14
|
edsl/conjure/AgentConstructionMixin.py,sha256=qLLYJH02HotVwBUYzaHs4QW0t5nsC3NX15qxQLzEwLI,5702
|
15
|
-
edsl/conjure/Conjure.py,sha256=
|
15
|
+
edsl/conjure/Conjure.py,sha256=JaCuAm3rmqjh11_X8PXgvPsVHGql3yTn9JEzVlzOUVU,2019
|
16
16
|
edsl/conjure/InputData.py,sha256=RdFgkzzayddSTd6vcwBB8LC796YBj94pciwrQx9nBtg,22003
|
17
17
|
edsl/conjure/InputDataCSV.py,sha256=m4hHSQogxt7LNcGNxcGRkrbdGy8pIQu5KvXhIEt9i6k,1684
|
18
18
|
edsl/conjure/InputDataMixinQuestionStats.py,sha256=Jav5pqYCLSQ1pAbGV8O9VCBu0vL8Q6pteSEhRKrONuw,6256
|
@@ -32,16 +32,16 @@ edsl/conversation/car_buying.py,sha256=Quh2Q8O9YoCyTKJUy3li376QFIOcL1gX0y89w3wlS
|
|
32
32
|
edsl/conversation/mug_negotiation.py,sha256=mjvAqErD4AjN3G2za2c-X-3axOShW-zAJUeiJqTxVPA,2616
|
33
33
|
edsl/conversation/next_speaker_utilities.py,sha256=bqr5JglCd6bdLc9IZ5zGOAsmN2F4ERiubSMYvZIG7qk,3629
|
34
34
|
edsl/coop/__init__.py,sha256=4iZCwJSzJVyjBYk8ggGxY2kZjq9dXVT1jhyPDNyew4I,115
|
35
|
-
edsl/coop/coop.py,sha256=
|
36
|
-
edsl/coop/utils.py,sha256=
|
35
|
+
edsl/coop/coop.py,sha256=p2JvhzUpjXEaiFWafCpkfsPIsH2BqV9ePAJCKsKfFOo,27138
|
36
|
+
edsl/coop/utils.py,sha256=UZwljKYW_Yjw7RYcjOg3SW7fn1pyHQfJ1fM48TBNoss,3601
|
37
37
|
edsl/data/Cache.py,sha256=aR9ydTFvUWiRJZd2G7SLFFtZaS2At8ArbQ1SAhYZBDs,15629
|
38
38
|
edsl/data/CacheEntry.py,sha256=_5UiFaJQu_U-Z1_lEPt-h6Gaidp2Eunk02wOd3Ni3MQ,7252
|
39
|
-
edsl/data/CacheHandler.py,sha256=
|
39
|
+
edsl/data/CacheHandler.py,sha256=8LCS7gsJjc3N-6cujJZepX3NkiDu30L1ajVJut5Vv_M,4795
|
40
40
|
edsl/data/SQLiteDict.py,sha256=V5Nfnxctgh4Iblqcw1KmbnkjtfmWrrombROSQ3mvg6A,8979
|
41
41
|
edsl/data/__init__.py,sha256=KBNGGEuGHq--D-TlpAQmvv_If906dJc1Gsy028zOx78,170
|
42
42
|
edsl/data/orm.py,sha256=Jz6rvw5SrlxwysTL0QI9r68EflKxeEBmf6j6himHDS8,238
|
43
43
|
edsl/data_transfer_models.py,sha256=ORcI-g_oUE8EofLvHQKnWC5ar-IgZiXGY2bIpTGAZyQ,1157
|
44
|
-
edsl/enums.py,sha256=
|
44
|
+
edsl/enums.py,sha256=kEIEQUl-I1omtxasqmjqVVSxSCMy3uWxE4UjGX6gqqg,4947
|
45
45
|
edsl/exceptions/__init__.py,sha256=HVg-U-rJ0fRoG9Rws6gnK5S9B68SkPWDPsoD6KpMZ-A,1370
|
46
46
|
edsl/exceptions/agents.py,sha256=3SORFwFbMGrF6-vAL2GrKEVdPcXo7md_k2oYufnVXHA,673
|
47
47
|
edsl/exceptions/configuration.py,sha256=qH2sInNTndKlCLAaNgaXHyRFdKQHL7-dElB_j8wz9g4,351
|
@@ -55,49 +55,51 @@ edsl/exceptions/questions.py,sha256=9z6RI7HRH-UMrnIlt28VTj9deCSbD1Frmpqi0H6YtF0,
|
|
55
55
|
edsl/exceptions/results.py,sha256=cn6Zb86Y648ulN3RYXb52HGv1NT3ykBfE6g2Xu8TeIw,325
|
56
56
|
edsl/exceptions/surveys.py,sha256=lADtr-tvPmUYSfRy3TdkTV5SzZfShlMgCzm-ZGYRlGk,557
|
57
57
|
edsl/inference_services/AnthropicService.py,sha256=tjYRJRIvQ7Z6uCYdqxm5ZlVjZdVZCnHtQ6QGHT59PXs,2822
|
58
|
-
edsl/inference_services/DeepInfraService.py,sha256=
|
58
|
+
edsl/inference_services/DeepInfraService.py,sha256=fWlH5sCNxf8eHPHxPPxJMEVWpCM9sDenkC8IZYqtXfA,515
|
59
59
|
edsl/inference_services/GoogleService.py,sha256=IwSwXr7khvHjpDzgiW5PRVKMhI2wQ9D1_H1MRnHjefU,2732
|
60
|
+
edsl/inference_services/GroqService.py,sha256=vcHiMqdo4eryg2pOk2SfTNpTnvCrx8qkIwtJjVPDnZU,433
|
60
61
|
edsl/inference_services/InferenceServiceABC.py,sha256=H6jW2gDKTLC3xgmqiSBdX4pGY1oauEO8VqGZoB3qvnQ,1790
|
61
|
-
edsl/inference_services/InferenceServicesCollection.py,sha256=
|
62
|
-
edsl/inference_services/OpenAIService.py,sha256=
|
62
|
+
edsl/inference_services/InferenceServicesCollection.py,sha256=EDyxnoSjGXhWob_ost7U8WUYjn1jgL_noB0-VlXBnOo,2810
|
63
|
+
edsl/inference_services/OpenAIService.py,sha256=OskDMmsbRITz5WWRl6GdPqVtQX53WjLZuzuW1mjVLBA,7488
|
63
64
|
edsl/inference_services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
64
65
|
edsl/inference_services/models_available_cache.py,sha256=ZT2pBGxJqTgwynthu-SqBjv8zl7ql44q3gA6xy7kqSU,2338
|
65
66
|
edsl/inference_services/rate_limits_cache.py,sha256=HYslviz7mxF9U4CUTPAkoyBsiXjSju-YCp4HHir6e34,1398
|
66
|
-
edsl/inference_services/registry.py,sha256
|
67
|
+
edsl/inference_services/registry.py,sha256=RzmOjDjq7361v2aUCeR8MIJw8qxWqKs_697ZnQrbbmM,556
|
67
68
|
edsl/inference_services/write_available.py,sha256=NNwhATlaMp8IYY635MSx-oYxt5X15acjAfaqYCo_I1Y,285
|
68
69
|
edsl/jobs/Answers.py,sha256=z4TADN-iHIrbMtI1jVyiaetv0OkTv768dFBpREIQC6c,1799
|
69
|
-
edsl/jobs/Jobs.py,sha256=
|
70
|
+
edsl/jobs/Jobs.py,sha256=LSr_No2PqnpPUPg0hK8BhD4V1ALQfwbDToblhUxKVMM,31387
|
70
71
|
edsl/jobs/__init__.py,sha256=aKuAyd_GoalGj-k7djOoVwEbFUE2XLPlikXaA1_8yAg,32
|
71
72
|
edsl/jobs/buckets/BucketCollection.py,sha256=LA8DBVwMdeTFCbSDI0S2cDzfi_Qo6kRizwrG64tE8S4,1844
|
72
73
|
edsl/jobs/buckets/ModelBuckets.py,sha256=hxw_tzc0V42CiB7mh5jIxlgwDVJ-zFZhlLtKrHEg8ho,2419
|
73
|
-
edsl/jobs/buckets/TokenBucket.py,sha256=
|
74
|
-
edsl/jobs/interviews/Interview.py,sha256=
|
74
|
+
edsl/jobs/buckets/TokenBucket.py,sha256=A4ZHDztlswRXlsdOmtAoyy9gBj3Y5rgOeKsy_U62sp4,6320
|
75
|
+
edsl/jobs/interviews/Interview.py,sha256=6CeWoHvhDqIbhBCrNubDvinBSa7K-Rks5ilGmJNFMg4,12028
|
76
|
+
edsl/jobs/interviews/InterviewExceptionEntry.py,sha256=N_-3_KwXTZLhGNwZSyTgUMS0lE-hikWRy2AzLOduTDQ,2772
|
75
77
|
edsl/jobs/interviews/InterviewStatistic.py,sha256=hY5d2EkIJ96NilPpZAvZZzZoxLXM7ss3xx5MIcKtTPs,1856
|
76
78
|
edsl/jobs/interviews/InterviewStatisticsCollection.py,sha256=_ZZ0fnZBQiIywP9Q_wWjpWhlfcPe2cn32GKut10t5RI,788
|
77
79
|
edsl/jobs/interviews/InterviewStatusDictionary.py,sha256=MSyys4hOWe1d8gfsUvAPbcKrs8YiPnz8jpufBSJL7SU,2485
|
78
80
|
edsl/jobs/interviews/InterviewStatusLog.py,sha256=6u0F8gf5tha39VQL-IK_QPkCsQAYVOx_IesX7TDDX_A,3252
|
79
81
|
edsl/jobs/interviews/InterviewStatusMixin.py,sha256=VV0Pel-crUsLoGpTifeIIkXsLGj0bfuO--UtpRnH-dU,1251
|
80
|
-
edsl/jobs/interviews/InterviewTaskBuildingMixin.py,sha256=
|
82
|
+
edsl/jobs/interviews/InterviewTaskBuildingMixin.py,sha256=O1XwX6QqhQ-M-b4fqy0XzopLna2A8BTrdjKcz3N0XHs,11505
|
81
83
|
edsl/jobs/interviews/ReportErrors.py,sha256=RSzDU2rWwtjfztj7sqaMab0quCiY-X2bG3AEOxhTim8,1745
|
82
|
-
edsl/jobs/interviews/interview_exception_tracking.py,sha256=
|
84
|
+
edsl/jobs/interviews/interview_exception_tracking.py,sha256=GF5PIj601rZPa5XWx1vTbFRt662S0CEoHYpG4Wulxj8,5066
|
83
85
|
edsl/jobs/interviews/interview_status_enum.py,sha256=KJ-1yLAHdX-p8TiFnM0M3v1tnBwkq4aMCuBX6-ytrI8,229
|
84
86
|
edsl/jobs/interviews/retry_management.py,sha256=9Efn4B3aV45vbocnF6J5WQt88i2FgFjoi5ALzGUukEE,1375
|
85
|
-
edsl/jobs/runners/JobsRunnerAsyncio.py,sha256=
|
86
|
-
edsl/jobs/runners/JobsRunnerStatusData.py,sha256
|
87
|
-
edsl/jobs/runners/JobsRunnerStatusMixin.py,sha256=
|
88
|
-
edsl/jobs/tasks/QuestionTaskCreator.py,sha256=
|
89
|
-
edsl/jobs/tasks/TaskCreators.py,sha256=
|
90
|
-
edsl/jobs/tasks/TaskHistory.py,sha256=
|
87
|
+
edsl/jobs/runners/JobsRunnerAsyncio.py,sha256=U6_tJyTIxZmHNtJw7Gn4cpAU8Pzvfq3n9s39fVjsGkc,12802
|
88
|
+
edsl/jobs/runners/JobsRunnerStatusData.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
89
|
+
edsl/jobs/runners/JobsRunnerStatusMixin.py,sha256=MmVK2udusAbQ3KCkQPiQYjWVDfKprBk9Ecelgui__0k,13424
|
90
|
+
edsl/jobs/tasks/QuestionTaskCreator.py,sha256=f-hF7TMdMMjQ5AQMpMJXrFdBUNSLrLHHl1sun774f_U,10394
|
91
|
+
edsl/jobs/tasks/TaskCreators.py,sha256=XqAbNU33378Z4PQncokbfJwnKt3KHR9aqa5fKYRDpfg,2694
|
92
|
+
edsl/jobs/tasks/TaskHistory.py,sha256=TnDSBgv84G_47iEzYyMHKMeSUnJAB43xPN-J7JSdevU,16188
|
91
93
|
edsl/jobs/tasks/TaskStatusLog.py,sha256=bqH36a32F12fjX-M-4lNOhHaK2-WLFzKE-r0PxZPRjI,546
|
92
94
|
edsl/jobs/tasks/task_management.py,sha256=KMToZuXzMlnHRHUF_VHL0-lHMTGhklf2GHVuwEEHtzA,301
|
93
95
|
edsl/jobs/tasks/task_status_enum.py,sha256=DOyrz61YlIS8R1W7izJNphcLrJ7I_ReUlfdRmk23h0Q,5333
|
94
96
|
edsl/jobs/tokens/InterviewTokenUsage.py,sha256=u_6-IHpGFwZ6qMEXr24-jyLVUSSp4dSs_4iAZsBv7O4,1100
|
95
97
|
edsl/jobs/tokens/TokenUsage.py,sha256=odj2-wDNEbHl9noyFAQ0DSKV0D9cv3aDOpmXufKZ8O4,1323
|
96
|
-
edsl/language_models/LanguageModel.py,sha256=
|
97
|
-
edsl/language_models/ModelList.py,sha256=
|
98
|
+
edsl/language_models/LanguageModel.py,sha256=5vW4hbACt8cJjQE8EDJnLr2DnsUYB449pR6vIedahE8,21265
|
99
|
+
edsl/language_models/ModelList.py,sha256=G8tzHqzz4exc28BGvGgVRk1Xwu8EDCiVWxMC5l8VnvI,2862
|
98
100
|
edsl/language_models/RegisterLanguageModelsMeta.py,sha256=2bvWrVau2BRo-Bb1aO-QATH8xxuW_tF7NmqBMGDOfSg,8191
|
99
101
|
edsl/language_models/__init__.py,sha256=bvY7Gy6VkX1gSbNkRbGPS-M1kUnb0EohL0FSagaEaTs,109
|
100
|
-
edsl/language_models/registry.py,sha256=
|
102
|
+
edsl/language_models/registry.py,sha256=h5eLN7lsqpK5vcEsxn3gsARb9Qyx-k3jq2MMnyuATcY,3727
|
101
103
|
edsl/language_models/repair.py,sha256=xaNunBRpMWgceSPOzk-ugp5WXtgLuuhj23TgXUeOobw,5963
|
102
104
|
edsl/language_models/unused/ReplicateBase.py,sha256=J1oqf7mEyyKhRwNUomnptVqAsVFYCbS3iTW0EXpKtXo,3331
|
103
105
|
edsl/notebooks/Notebook.py,sha256=qwDqUN2Gujr7WUneRrshzRBjHvcPpOIBRyqcrAOc90Q,7341
|
@@ -124,10 +126,10 @@ edsl/questions/QuestionBudget.py,sha256=K8cc1YOfoLWRoZBAkWO7WsMDZne0a5oAJMSxv2Jz
|
|
124
126
|
edsl/questions/QuestionCheckBox.py,sha256=YHS-LEvR_1CWyg4usOlWfj9Gb_cCQlfIWIWhYRWn7Wo,6129
|
125
127
|
edsl/questions/QuestionExtract.py,sha256=fjnsNLS2fNW6dfFuRyc2EgKEHx8ujjONmg2nSRynje4,3988
|
126
128
|
edsl/questions/QuestionFreeText.py,sha256=ASj1s0EQYcZerJp476fscu_xEME8mKzVK3sPL6egiuU,3289
|
127
|
-
edsl/questions/QuestionFunctional.py,sha256=
|
129
|
+
edsl/questions/QuestionFunctional.py,sha256=jlC1eNE-kpp9o5CXKo-c3Re4PIq1_WmdJ66u9nD-W7w,4967
|
128
130
|
edsl/questions/QuestionList.py,sha256=Wf7xDXJsQBsAD_yOrzZ_GstKGT7aZjimTkU6qyqOhhM,4051
|
129
|
-
edsl/questions/QuestionMultipleChoice.py,sha256=
|
130
|
-
edsl/questions/QuestionNumerical.py,sha256=
|
131
|
+
edsl/questions/QuestionMultipleChoice.py,sha256=AT_V-J6jeSoPmAGJprh_nCmZ71IFYLCwx2K_0FVJ8iI,6632
|
132
|
+
edsl/questions/QuestionNumerical.py,sha256=dQkobQTXkmMUY4f-lSVAiTS33009cDy5qFCM1gJeCbs,3459
|
131
133
|
edsl/questions/QuestionRank.py,sha256=NEAwDt1at0zEM2S-E7jXMjglnlB0WhUlxSVJkzH4xSs,5876
|
132
134
|
edsl/questions/RegisterQuestionsMeta.py,sha256=unON0CKpW-mveyhg9V3_BF_GYYwytMYP9h2ZZPetVNM,1994
|
133
135
|
edsl/questions/SimpleAskMixin.py,sha256=YRLiHA6TPMKyLWvdAi7Mfnxcqtw7Kem6tH28YNb8n4U,2227
|
@@ -138,26 +140,26 @@ edsl/questions/derived/QuestionLinearScale.py,sha256=7tybIaMaDTMkTFC6CymusW69so-
|
|
138
140
|
edsl/questions/derived/QuestionTopK.py,sha256=TouXKZt_h6Jd-2rAjkEOCJOzzei4Wa-3hjYq9CLxWws,2744
|
139
141
|
edsl/questions/derived/QuestionYesNo.py,sha256=KtMGuAPYWv-7-9WGa0fIS2UBxf6KKjFpuTk_h8FPZbg,2076
|
140
142
|
edsl/questions/derived/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
141
|
-
edsl/questions/descriptors.py,sha256=
|
143
|
+
edsl/questions/descriptors.py,sha256=W0_mGZKKiXv2E2BKIy8-4n_QDILh9sun85Oev1YRoLs,14791
|
142
144
|
edsl/questions/question_registry.py,sha256=ZD7Y_towDdlnnmLq12vVewgQ3fEk9Ur0tCTWK8-WqeQ,5241
|
143
145
|
edsl/questions/settings.py,sha256=er_z0ZW_dgmC5CHLWkaqBJiuWgAYzIund85M5YZFQAI,291
|
144
146
|
edsl/results/Dataset.py,sha256=DZgb3vIj69ON7APQ6DimjBwAS1xZvZiXOg68CjW9E3I,8662
|
145
|
-
edsl/results/DatasetExportMixin.py,sha256=
|
146
|
-
edsl/results/Result.py,sha256=
|
147
|
-
edsl/results/Results.py,sha256=
|
147
|
+
edsl/results/DatasetExportMixin.py,sha256=rqNMcyjkV_pfs2OUdz0DYiIaT_48n1KZ9KaNbESuj1k,25418
|
148
|
+
edsl/results/Result.py,sha256=53lz1mGqmnt2wHl-Ccimbla7cNlg_mLUgOBQa6Qd19k,14433
|
149
|
+
edsl/results/Results.py,sha256=IUHfmcBVtZ3me4VvVBQsdKKtuMXaZtLkzIrH5US7aUY,38155
|
148
150
|
edsl/results/ResultsDBMixin.py,sha256=Vs95zbSB4G7ENY4lU7OBdekg9evwTrtPH0IIL2NAFTk,7936
|
149
151
|
edsl/results/ResultsExportMixin.py,sha256=XizBsPNxziyffirMA4kS7UHpYM1WIE4s1K-B7TqTfDw,1266
|
150
152
|
edsl/results/ResultsFetchMixin.py,sha256=VEa0TKDcXbnTinSKs9YaE4WjOSLmlp9Po1_9kklFvSo,848
|
151
153
|
edsl/results/ResultsGGMixin.py,sha256=SAYz8p4wb1g8x6KhBVz9NHOGib2c2XsqtTclpADrFeM,4344
|
152
|
-
edsl/results/ResultsToolsMixin.py,sha256=
|
154
|
+
edsl/results/ResultsToolsMixin.py,sha256=mseEFxJCf9sjXdIxpjITt_UZBwdXxw2o2VLg5jMrALA,3017
|
153
155
|
edsl/results/__init__.py,sha256=2YcyiVtXi-3vIV0ZzOy1PqBLm2gaziufJVi4fdNrAt8,80
|
154
156
|
edsl/scenarios/FileStore.py,sha256=AevvU1qdLSmL4Q7cb1PhUiaJk1i5T0sgkTKBYf0KDN4,8722
|
155
|
-
edsl/scenarios/Scenario.py,sha256=
|
157
|
+
edsl/scenarios/Scenario.py,sha256=VpQzY3169Z18ZoNOu_pjIf66TXngIVFZHvQXUJeRdQg,15254
|
156
158
|
edsl/scenarios/ScenarioHtmlMixin.py,sha256=EmugmbPJYW5eZS30rM6pDMDQD9yrrvHjmgZWB1qBfq4,1882
|
157
159
|
edsl/scenarios/ScenarioImageMixin.py,sha256=VJ5FqyPrL5-ieORlWMpnjmOAFIau8QFZCIZyEBKgb6I,3530
|
158
|
-
edsl/scenarios/ScenarioList.py,sha256=
|
159
|
-
edsl/scenarios/ScenarioListExportMixin.py,sha256=
|
160
|
-
edsl/scenarios/ScenarioListPdfMixin.py,sha256=
|
160
|
+
edsl/scenarios/ScenarioList.py,sha256=6evy6fQ3Kdk-vdMFIUT9vEvVXIGaeb8U0ds4V1Kv12I,20153
|
161
|
+
edsl/scenarios/ScenarioListExportMixin.py,sha256=nuBrSlkNogfVZzIV2vJai216ebWH3iJxiLJAJ_n0xg8,1410
|
162
|
+
edsl/scenarios/ScenarioListPdfMixin.py,sha256=dt7GzC2UZZpQjjilS7_eBm0BmqU6bDWWbBP7ejkhgHM,3830
|
161
163
|
edsl/scenarios/__init__.py,sha256=KRwZCLf2R0qyJvv1NGbd8M51Bt6Ia6Iylg-Xq_2Fa6M,98
|
162
164
|
edsl/shared.py,sha256=lgLa-mCk2flIhxXarXLtfXZjXG_6XHhC2A3O8yRTjXc,20
|
163
165
|
edsl/study/ObjectEntry.py,sha256=e3xRPH8wCN8Pum5HZsQRYgnSoauSvjXunIEH79wu5A8,5788
|
@@ -170,7 +172,7 @@ edsl/surveys/Memory.py,sha256=-ikOtkkQldGB_BkPCW3o7AYwV5B_pIwlREw7aVCSHaQ,1113
|
|
170
172
|
edsl/surveys/MemoryPlan.py,sha256=BeLuqS5Q8G2jSluHYFCAxVmj7cNPK-rDQ3mUsuDjikQ,7979
|
171
173
|
edsl/surveys/Rule.py,sha256=ddZyZSObs4gsKtFSmcXkPigXDX8rrh1NFvAplP02TcA,11092
|
172
174
|
edsl/surveys/RuleCollection.py,sha256=sN7aYDQJG3HmE-WxohgpctcQbHewjwE6NAqEVTxvFP8,13359
|
173
|
-
edsl/surveys/Survey.py,sha256=
|
175
|
+
edsl/surveys/Survey.py,sha256=eB8S3KQ0d7nyJ0RqhCimmOXcO-d2_GquxvHMR0g6t90,48567
|
174
176
|
edsl/surveys/SurveyCSS.py,sha256=NjJezs2sTlgFprN6IukjGKwNYmNdXnLjzV2w5K4z4RI,8415
|
175
177
|
edsl/surveys/SurveyExportMixin.py,sha256=vj9bZReHx0wBK9sVuS0alzPIUDdg6AFFMd7bl1RKWKI,6555
|
176
178
|
edsl/surveys/SurveyFlowVisualizationMixin.py,sha256=Z-YqeedMqWOtCFy003YJ9aneJ1n4bn70lDoILwLtTc0,3966
|
@@ -197,7 +199,7 @@ edsl/utilities/interface.py,sha256=AaKpWiwWBwP2swNXmnFlIf3ZFsjfsR5bjXQAW47tD-8,1
|
|
197
199
|
edsl/utilities/repair_functions.py,sha256=tftmklAqam6LOQQu_-9U44N-llycffhW8LfO63vBmNw,929
|
198
200
|
edsl/utilities/restricted_python.py,sha256=5-_zUhrNbos7pLhDl9nr8d24auRlquR6w-vKkmNjPiA,2060
|
199
201
|
edsl/utilities/utilities.py,sha256=oU5Gg6szTGqsJ2yBOS0aC3XooezLE8By3SdrQLLpqvA,10107
|
200
|
-
edsl-0.1.
|
201
|
-
edsl-0.1.
|
202
|
-
edsl-0.1.
|
203
|
-
edsl-0.1.
|
202
|
+
edsl-0.1.31.dist-info/LICENSE,sha256=_qszBDs8KHShVYcYzdMz3HNMtH-fKN_p5zjoVAVumFc,1111
|
203
|
+
edsl-0.1.31.dist-info/METADATA,sha256=_oRw6BokkdLeR-NvC8wUs58e2s3IgoRe-RYdI6y3X7c,4166
|
204
|
+
edsl-0.1.31.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
205
|
+
edsl-0.1.31.dist-info/RECORD,,
|
File without changes
|
File without changes
|