edsl 0.1.36__py3-none-any.whl → 0.1.36.dev2__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/Base.py +0 -5
- edsl/__init__.py +0 -1
- edsl/__version__.py +1 -1
- edsl/agents/Agent.py +7 -11
- edsl/agents/InvigilatorBase.py +1 -5
- edsl/agents/PromptConstructor.py +18 -27
- edsl/conversation/Conversation.py +1 -1
- edsl/coop/PriceFetcher.py +18 -14
- edsl/coop/coop.py +8 -42
- edsl/exceptions/coop.py +0 -8
- edsl/inference_services/InferenceServiceABC.py +0 -28
- edsl/inference_services/InferenceServicesCollection.py +4 -10
- edsl/inference_services/models_available_cache.py +1 -25
- edsl/jobs/Jobs.py +167 -190
- edsl/jobs/interviews/Interview.py +14 -42
- edsl/jobs/interviews/InterviewExceptionCollection.py +0 -9
- edsl/jobs/interviews/InterviewExceptionEntry.py +6 -31
- edsl/jobs/runners/JobsRunnerAsyncio.py +13 -8
- edsl/jobs/tasks/TaskHistory.py +7 -23
- edsl/questions/QuestionFunctional.py +3 -7
- edsl/results/Dataset.py +0 -12
- edsl/results/Result.py +0 -2
- edsl/results/Results.py +1 -13
- edsl/scenarios/FileStore.py +5 -20
- edsl/scenarios/Scenario.py +1 -15
- edsl/scenarios/__init__.py +0 -2
- edsl/surveys/Survey.py +0 -3
- edsl/surveys/instructions/Instruction.py +3 -20
- {edsl-0.1.36.dist-info → edsl-0.1.36.dev2.dist-info}/METADATA +1 -1
- {edsl-0.1.36.dist-info → edsl-0.1.36.dev2.dist-info}/RECORD +32 -33
- edsl/data/RemoteCacheSync.py +0 -97
- {edsl-0.1.36.dist-info → edsl-0.1.36.dev2.dist-info}/LICENSE +0 -0
- {edsl-0.1.36.dist-info → edsl-0.1.36.dev2.dist-info}/WHEEL +0 -0
@@ -1,12 +1,18 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
import time
|
3
|
+
import math
|
3
4
|
import asyncio
|
5
|
+
import functools
|
4
6
|
import threading
|
5
7
|
from typing import Coroutine, List, AsyncGenerator, Optional, Union, Generator
|
6
8
|
from contextlib import contextmanager
|
7
9
|
from collections import UserList
|
8
10
|
|
11
|
+
from rich.live import Live
|
12
|
+
from rich.console import Console
|
13
|
+
|
9
14
|
from edsl.results.Results import Results
|
15
|
+
from edsl import shared_globals
|
10
16
|
from edsl.jobs.interviews.Interview import Interview
|
11
17
|
from edsl.jobs.runners.JobsRunnerStatus import JobsRunnerStatus
|
12
18
|
|
@@ -42,6 +48,8 @@ class JobsRunnerAsyncio:
|
|
42
48
|
self.bucket_collection: "BucketCollection" = jobs.bucket_collection
|
43
49
|
self.total_interviews: List["Interview"] = []
|
44
50
|
|
51
|
+
# self.jobs_runner_status = JobsRunnerStatus(self, n=1)
|
52
|
+
|
45
53
|
async def run_async_generator(
|
46
54
|
self,
|
47
55
|
cache: Cache,
|
@@ -173,7 +181,6 @@ class JobsRunnerAsyncio:
|
|
173
181
|
] = question_name_to_prompts[answer_key_name]["system_prompt"]
|
174
182
|
|
175
183
|
raw_model_results_dictionary = {}
|
176
|
-
cache_used_dictionary = {}
|
177
184
|
for result in valid_results:
|
178
185
|
question_name = result.question_name
|
179
186
|
raw_model_results_dictionary[
|
@@ -188,7 +195,6 @@ class JobsRunnerAsyncio:
|
|
188
195
|
else 1.0 / result.cost
|
189
196
|
)
|
190
197
|
raw_model_results_dictionary[question_name + "_one_usd_buys"] = one_use_buys
|
191
|
-
cache_used_dictionary[question_name] = result.cache_used
|
192
198
|
|
193
199
|
result = Result(
|
194
200
|
agent=interview.agent,
|
@@ -201,7 +207,6 @@ class JobsRunnerAsyncio:
|
|
201
207
|
survey=interview.survey,
|
202
208
|
generated_tokens=generated_tokens_dict,
|
203
209
|
comments_dict=comments_dict,
|
204
|
-
cache_used_dict=cache_used_dictionary,
|
205
210
|
)
|
206
211
|
result.interview_hash = hash(interview)
|
207
212
|
|
@@ -220,16 +225,17 @@ class JobsRunnerAsyncio:
|
|
220
225
|
}
|
221
226
|
interview_hashes = list(interview_lookup.keys())
|
222
227
|
|
223
|
-
task_history = TaskHistory(self.total_interviews, include_traceback=False)
|
224
|
-
|
225
228
|
results = Results(
|
226
229
|
survey=self.jobs.survey,
|
227
230
|
data=sorted(
|
228
231
|
raw_results, key=lambda x: interview_hashes.index(x.interview_hash)
|
229
232
|
),
|
230
|
-
task_history=task_history,
|
231
|
-
cache=cache,
|
232
233
|
)
|
234
|
+
results.cache = cache
|
235
|
+
results.task_history = TaskHistory(
|
236
|
+
self.total_interviews, include_traceback=False
|
237
|
+
)
|
238
|
+
results.has_unfixed_exceptions = results.task_history.has_unfixed_exceptions
|
233
239
|
results.bucket_collection = self.bucket_collection
|
234
240
|
|
235
241
|
if results.has_unfixed_exceptions and print_exceptions:
|
@@ -257,7 +263,6 @@ class JobsRunnerAsyncio:
|
|
257
263
|
except Exception as e:
|
258
264
|
print(e)
|
259
265
|
remote_logging = False
|
260
|
-
|
261
266
|
if remote_logging:
|
262
267
|
filestore = HTMLFileStore(filepath)
|
263
268
|
coop_details = filestore.push(description="Error report")
|
edsl/jobs/tasks/TaskHistory.py
CHANGED
@@ -8,7 +8,7 @@ from edsl.jobs.tasks.task_status_enum import TaskStatus
|
|
8
8
|
|
9
9
|
|
10
10
|
class TaskHistory:
|
11
|
-
def __init__(self, interviews: List["Interview"], include_traceback
|
11
|
+
def __init__(self, interviews: List["Interview"], include_traceback=False):
|
12
12
|
"""
|
13
13
|
The structure of a TaskHistory exception
|
14
14
|
|
@@ -25,7 +25,6 @@ class TaskHistory:
|
|
25
25
|
|
26
26
|
@classmethod
|
27
27
|
def example(cls):
|
28
|
-
""" """
|
29
28
|
from edsl.jobs.interviews.Interview import Interview
|
30
29
|
|
31
30
|
from edsl.jobs.Jobs import Jobs
|
@@ -39,7 +38,6 @@ class TaskHistory:
|
|
39
38
|
skip_retry=True,
|
40
39
|
cache=False,
|
41
40
|
raise_validation_errors=True,
|
42
|
-
disable_remote_inference=True,
|
43
41
|
)
|
44
42
|
|
45
43
|
return cls(results.task_history.total_interviews)
|
@@ -74,29 +72,14 @@ class TaskHistory:
|
|
74
72
|
|
75
73
|
def to_dict(self):
|
76
74
|
"""Return the TaskHistory as a dictionary."""
|
77
|
-
# return {
|
78
|
-
# "exceptions": [
|
79
|
-
# e.to_dict(include_traceback=self.include_traceback)
|
80
|
-
# for e in self.exceptions
|
81
|
-
# ],
|
82
|
-
# "indices": self.indices,
|
83
|
-
# }
|
84
75
|
return {
|
85
|
-
"
|
86
|
-
|
76
|
+
"exceptions": [
|
77
|
+
e.to_dict(include_traceback=self.include_traceback)
|
78
|
+
for e in self.exceptions
|
79
|
+
],
|
80
|
+
"indices": self.indices,
|
87
81
|
}
|
88
82
|
|
89
|
-
@classmethod
|
90
|
-
def from_dict(cls, data: dict):
|
91
|
-
"""Create a TaskHistory from a dictionary."""
|
92
|
-
if data is None:
|
93
|
-
return cls([], include_traceback=False)
|
94
|
-
|
95
|
-
from edsl.jobs.interviews.Interview import Interview
|
96
|
-
|
97
|
-
interviews = [Interview.from_dict(i) for i in data["interviews"]]
|
98
|
-
return cls(interviews, include_traceback=data["include_traceback"])
|
99
|
-
|
100
83
|
@property
|
101
84
|
def has_exceptions(self) -> bool:
|
102
85
|
"""Return True if there are any exceptions.
|
@@ -276,6 +259,7 @@ class TaskHistory:
|
|
276
259
|
question_type = interview.survey.get_question(
|
277
260
|
question_name
|
278
261
|
).question_type
|
262
|
+
# breakpoint()
|
279
263
|
if (question_name, question_type) not in exceptions_by_question_name:
|
280
264
|
exceptions_by_question_name[(question_name, question_type)] = 0
|
281
265
|
exceptions_by_question_name[(question_name, question_type)] += len(
|
@@ -50,7 +50,6 @@ class QuestionFunctional(QuestionBase):
|
|
50
50
|
requires_loop: Optional[bool] = False,
|
51
51
|
function_source_code: Optional[str] = None,
|
52
52
|
function_name: Optional[str] = None,
|
53
|
-
unsafe: Optional[bool] = False,
|
54
53
|
):
|
55
54
|
super().__init__()
|
56
55
|
if func:
|
@@ -62,12 +61,9 @@ class QuestionFunctional(QuestionBase):
|
|
62
61
|
|
63
62
|
self.requires_loop = requires_loop
|
64
63
|
|
65
|
-
|
66
|
-
self.
|
67
|
-
|
68
|
-
self.func = create_restricted_function(
|
69
|
-
self.function_name, self.function_source_code
|
70
|
-
)
|
64
|
+
self.func = create_restricted_function(
|
65
|
+
self.function_name, self.function_source_code
|
66
|
+
)
|
71
67
|
|
72
68
|
self.question_name = question_name
|
73
69
|
self.question_text = question_text
|
edsl/results/Dataset.py
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
4
|
import random
|
5
|
-
import json
|
6
5
|
from collections import UserList
|
7
6
|
from typing import Any, Union, Optional
|
8
7
|
|
@@ -111,17 +110,6 @@ class Dataset(UserList, ResultsExportMixin):
|
|
111
110
|
new_data.append(observation)
|
112
111
|
return Dataset(new_data)
|
113
112
|
|
114
|
-
def to_json(self):
|
115
|
-
"""Return a JSON representation of the dataset.
|
116
|
-
|
117
|
-
>>> d = Dataset([{'a.b':[1,2,3,4]}])
|
118
|
-
>>> d.to_json()
|
119
|
-
[{'a.b': [1, 2, 3, 4]}]
|
120
|
-
"""
|
121
|
-
return json.loads(
|
122
|
-
json.dumps(self.data)
|
123
|
-
) # janky but I want to make sure it's serializable & deserializable
|
124
|
-
|
125
113
|
def _repr_html_(self) -> str:
|
126
114
|
"""Return an HTML representation of the dataset."""
|
127
115
|
from edsl.utilities.utilities import data_to_html
|
edsl/results/Result.py
CHANGED
@@ -75,7 +75,6 @@ class Result(Base, UserDict):
|
|
75
75
|
question_to_attributes: Optional[dict] = None,
|
76
76
|
generated_tokens: Optional[dict] = None,
|
77
77
|
comments_dict: Optional[dict] = None,
|
78
|
-
cache_used_dict: Optional[dict] = None,
|
79
78
|
):
|
80
79
|
"""Initialize a Result object.
|
81
80
|
|
@@ -131,7 +130,6 @@ class Result(Base, UserDict):
|
|
131
130
|
self.question_to_attributes = question_to_attributes
|
132
131
|
self.generated_tokens = generated_tokens
|
133
132
|
self.comments_dict = comments_dict or {}
|
134
|
-
self.cache_used_dict = cache_used_dict or {}
|
135
133
|
|
136
134
|
self._combined_dict = None
|
137
135
|
self._problem_keys = None
|
edsl/results/Results.py
CHANGED
@@ -29,7 +29,6 @@ from edsl.results.ResultsFetchMixin import ResultsFetchMixin
|
|
29
29
|
from edsl.utilities.decorators import add_edsl_version, remove_edsl_version
|
30
30
|
from edsl.utilities.utilities import dict_hash
|
31
31
|
|
32
|
-
|
33
32
|
from edsl.Base import Base
|
34
33
|
|
35
34
|
|
@@ -90,7 +89,6 @@ class Results(UserList, Mixins, Base):
|
|
90
89
|
cache: Optional["Cache"] = None,
|
91
90
|
job_uuid: Optional[str] = None,
|
92
91
|
total_results: Optional[int] = None,
|
93
|
-
task_history: Optional["TaskHistory"] = None,
|
94
92
|
):
|
95
93
|
"""Instantiate a `Results` object with a survey and a list of `Result` objects.
|
96
94
|
|
@@ -102,7 +100,6 @@ class Results(UserList, Mixins, Base):
|
|
102
100
|
"""
|
103
101
|
super().__init__(data)
|
104
102
|
from edsl.data.Cache import Cache
|
105
|
-
from edsl.jobs.tasks.TaskHistory import TaskHistory
|
106
103
|
|
107
104
|
self.survey = survey
|
108
105
|
self.created_columns = created_columns or []
|
@@ -110,8 +107,6 @@ class Results(UserList, Mixins, Base):
|
|
110
107
|
self._total_results = total_results
|
111
108
|
self.cache = cache or Cache()
|
112
109
|
|
113
|
-
self.task_history = task_history or TaskHistory(interviews=[])
|
114
|
-
|
115
110
|
if hasattr(self, "_add_output_functions"):
|
116
111
|
self._add_output_functions()
|
117
112
|
|
@@ -281,7 +276,6 @@ class Results(UserList, Mixins, Base):
|
|
281
276
|
"survey": self.survey.to_dict(),
|
282
277
|
"created_columns": self.created_columns,
|
283
278
|
"cache": Cache() if not hasattr(self, "cache") else self.cache.to_dict(),
|
284
|
-
"task_history": self.task_history.to_dict(),
|
285
279
|
}
|
286
280
|
|
287
281
|
def compare(self, other_results):
|
@@ -301,10 +295,6 @@ class Results(UserList, Mixins, Base):
|
|
301
295
|
"b_not_a": [other_results[i] for i in indices_other],
|
302
296
|
}
|
303
297
|
|
304
|
-
@property
|
305
|
-
def has_unfixed_exceptions(self):
|
306
|
-
return self.task_history.has_unfixed_exceptions
|
307
|
-
|
308
298
|
@add_edsl_version
|
309
299
|
def to_dict(self) -> dict[str, Any]:
|
310
300
|
"""Convert the Results object to a dictionary.
|
@@ -315,7 +305,7 @@ class Results(UserList, Mixins, Base):
|
|
315
305
|
|
316
306
|
>>> r = Results.example()
|
317
307
|
>>> r.to_dict().keys()
|
318
|
-
dict_keys(['data', 'survey', 'created_columns', 'cache', '
|
308
|
+
dict_keys(['data', 'survey', 'created_columns', 'cache', 'edsl_version', 'edsl_class_name'])
|
319
309
|
"""
|
320
310
|
return self._to_dict()
|
321
311
|
|
@@ -368,7 +358,6 @@ class Results(UserList, Mixins, Base):
|
|
368
358
|
"""
|
369
359
|
from edsl import Survey, Cache
|
370
360
|
from edsl.results.Result import Result
|
371
|
-
from edsl.jobs.tasks.TaskHistory import TaskHistory
|
372
361
|
|
373
362
|
try:
|
374
363
|
results = cls(
|
@@ -378,7 +367,6 @@ class Results(UserList, Mixins, Base):
|
|
378
367
|
cache=(
|
379
368
|
Cache.from_dict(data.get("cache")) if "cache" in data else Cache()
|
380
369
|
),
|
381
|
-
task_history=TaskHistory.from_dict(data.get("task_history")),
|
382
370
|
)
|
383
371
|
except Exception as e:
|
384
372
|
raise ResultsDeserializationError(f"Error in Results.from_dict: {e}")
|
edsl/scenarios/FileStore.py
CHANGED
@@ -77,19 +77,8 @@ class FileStore(Scenario):
|
|
77
77
|
def __str__(self):
|
78
78
|
return "FileStore: self.path"
|
79
79
|
|
80
|
-
@classmethod
|
81
|
-
def example(self):
|
82
|
-
import tempfile
|
83
|
-
|
84
|
-
with tempfile.NamedTemporaryFile(suffix=".txt", delete=False) as f:
|
85
|
-
f.write(b"Hello, World!")
|
86
|
-
|
87
|
-
return self(path=f.name)
|
88
|
-
|
89
80
|
@property
|
90
81
|
def size(self) -> int:
|
91
|
-
if self.base64_string != None:
|
92
|
-
return (len(self.base64_string) / 4.0) * 3 # from base64 to char size
|
93
82
|
return os.path.getsize(self.path)
|
94
83
|
|
95
84
|
def upload_google(self, refresh: bool = False) -> None:
|
@@ -104,7 +93,7 @@ class FileStore(Scenario):
|
|
104
93
|
return cls(**d)
|
105
94
|
|
106
95
|
def __repr__(self):
|
107
|
-
return f"FileStore(
|
96
|
+
return f"FileStore({self.path})"
|
108
97
|
|
109
98
|
def encode_file_to_base64_string(self, file_path: str):
|
110
99
|
try:
|
@@ -283,8 +272,7 @@ class CSVFileStore(FileStore):
|
|
283
272
|
|
284
273
|
with tempfile.NamedTemporaryFile(suffix=".csv", delete=False) as f:
|
285
274
|
r.to_csv(filename=f.name)
|
286
|
-
|
287
|
-
return cls(f.name)
|
275
|
+
return cls(f.name)
|
288
276
|
|
289
277
|
def view(self):
|
290
278
|
import pandas as pd
|
@@ -364,8 +352,7 @@ class PDFFileStore(FileStore):
|
|
364
352
|
|
365
353
|
with tempfile.NamedTemporaryFile(suffix=".pdf", delete=False) as f:
|
366
354
|
f.write(pdf_string.encode())
|
367
|
-
|
368
|
-
return cls(f.name)
|
355
|
+
return cls(f.name)
|
369
356
|
|
370
357
|
|
371
358
|
class PNGFileStore(FileStore):
|
@@ -380,8 +367,7 @@ class PNGFileStore(FileStore):
|
|
380
367
|
|
381
368
|
with tempfile.NamedTemporaryFile(suffix=".png", delete=False) as f:
|
382
369
|
f.write(png_string.encode())
|
383
|
-
|
384
|
-
return cls(f.name)
|
370
|
+
return cls(f.name)
|
385
371
|
|
386
372
|
def view(self):
|
387
373
|
import matplotlib.pyplot as plt
|
@@ -421,8 +407,7 @@ class HTMLFileStore(FileStore):
|
|
421
407
|
|
422
408
|
with tempfile.NamedTemporaryFile(suffix=".html", delete=False) as f:
|
423
409
|
f.write("<html><body><h1>Test</h1></body></html>".encode())
|
424
|
-
|
425
|
-
return cls(f.name)
|
410
|
+
return cls(f.name)
|
426
411
|
|
427
412
|
def view(self):
|
428
413
|
import webbrowser
|
edsl/scenarios/Scenario.py
CHANGED
@@ -134,13 +134,7 @@ class Scenario(Base, UserDict, ScenarioHtmlMixin):
|
|
134
134
|
>>> s.to_dict()
|
135
135
|
{'food': 'wood chips', 'edsl_version': '...', 'edsl_class_name': 'Scenario'}
|
136
136
|
"""
|
137
|
-
|
138
|
-
|
139
|
-
d = self.data.copy()
|
140
|
-
for key, value in d.items():
|
141
|
-
if isinstance(value, FileStore):
|
142
|
-
d[key] = value.to_dict()
|
143
|
-
return d
|
137
|
+
return self.data.copy()
|
144
138
|
|
145
139
|
@add_edsl_version
|
146
140
|
def to_dict(self) -> dict:
|
@@ -445,14 +439,6 @@ class Scenario(Base, UserDict, ScenarioHtmlMixin):
|
|
445
439
|
>>> Scenario.from_dict({"food": "wood chips"})
|
446
440
|
Scenario({'food': 'wood chips'})
|
447
441
|
"""
|
448
|
-
from edsl.scenarios.FileStore import FileStore
|
449
|
-
|
450
|
-
for key, value in d.items():
|
451
|
-
# TODO: we should check this better if its a FileStore + add remote security check against path traversal
|
452
|
-
if (
|
453
|
-
isinstance(value, dict) and "base64_string" in value and "path" in value
|
454
|
-
) or isinstance(value, FileStore):
|
455
|
-
d[key] = FileStore.from_dict(value)
|
456
442
|
return cls(d)
|
457
443
|
|
458
444
|
def _table(self) -> tuple[dict, list]:
|
edsl/scenarios/__init__.py
CHANGED
edsl/surveys/Survey.py
CHANGED
@@ -5,12 +5,9 @@ from edsl.utilities.decorators import add_edsl_version, remove_edsl_version
|
|
5
5
|
|
6
6
|
|
7
7
|
class Instruction:
|
8
|
-
def __init__(
|
9
|
-
self, name, text, preamble="You were given the following instructions:"
|
10
|
-
):
|
8
|
+
def __init__(self, name, text):
|
11
9
|
self.name = name
|
12
10
|
self.text = text
|
13
|
-
self.preamble = preamble
|
14
11
|
|
15
12
|
def __str__(self):
|
16
13
|
return self.text
|
@@ -19,17 +16,7 @@ class Instruction:
|
|
19
16
|
return """Instruction(name="{}", text="{}")""".format(self.name, self.text)
|
20
17
|
|
21
18
|
def _to_dict(self):
|
22
|
-
return {
|
23
|
-
"name": self.name,
|
24
|
-
"text": self.text,
|
25
|
-
"edsl_class_name": "Instruction",
|
26
|
-
"preamble": self.preamble,
|
27
|
-
}
|
28
|
-
|
29
|
-
def add_question(self, question) -> "Survey":
|
30
|
-
from edsl import Survey
|
31
|
-
|
32
|
-
return Survey([self, question])
|
19
|
+
return {"name": self.name, "text": self.text, "edsl_class_name": "Instruction"}
|
33
20
|
|
34
21
|
@add_edsl_version
|
35
22
|
def to_dict(self):
|
@@ -44,8 +31,4 @@ class Instruction:
|
|
44
31
|
@classmethod
|
45
32
|
@remove_edsl_version
|
46
33
|
def from_dict(cls, data):
|
47
|
-
return cls(
|
48
|
-
data["name"],
|
49
|
-
data["text"],
|
50
|
-
data.get("preamble", "You were given the following instructions:"),
|
51
|
-
)
|
34
|
+
return cls(data["name"], data["text"])
|
@@ -1,13 +1,13 @@
|
|
1
|
-
edsl/Base.py,sha256=
|
1
|
+
edsl/Base.py,sha256=wdFpHWlQlGNL4XfOmYA0AK9YupMDxK3G7mDHCQp60o4,9295
|
2
2
|
edsl/BaseDiff.py,sha256=RoVEh52UJs22yMa7k7jv8se01G62jJNWnBzaZngo-Ug,8260
|
3
3
|
edsl/TemplateLoader.py,sha256=sDBlSMt7EfOduM7w3h6v03gvh_Rzn9hVrlS-iLSQdZA,849
|
4
|
-
edsl/__init__.py,sha256=
|
5
|
-
edsl/__version__.py,sha256=
|
6
|
-
edsl/agents/Agent.py,sha256=
|
4
|
+
edsl/__init__.py,sha256=UZcx9RHSi3Dslh2lWvCOeppdMW9Xzw_YLs-kFaNW1MU,1770
|
5
|
+
edsl/__version__.py,sha256=Dnc20k6lGmSidtew9MDgyZjR_O8UzfDzRib-ENbteok,28
|
6
|
+
edsl/agents/Agent.py,sha256=dG3SbCm4IpHpObcWm-OejfYHtVXa5NlxGKYKOc-dUxQ,29311
|
7
7
|
edsl/agents/AgentList.py,sha256=qo8VK3Ov0YOSbsBcHmlwLZBH81CcDfy5IEcx9AVH78M,10963
|
8
8
|
edsl/agents/Invigilator.py,sha256=m4T-z4aNCGd4LKjLXVNI2VszYW-pQeScfcFAxkb0pWc,9080
|
9
|
-
edsl/agents/InvigilatorBase.py,sha256=
|
10
|
-
edsl/agents/PromptConstructor.py,sha256=
|
9
|
+
edsl/agents/InvigilatorBase.py,sha256=qIdAiriXAbnJH_SN9w2UAXHcDgQvk8Ar3QerKFjtPwM,10341
|
10
|
+
edsl/agents/PromptConstructor.py,sha256=1k_Xni5T_ZB5_3hGFLzYiD1fPK4911IIatVHz9qD1s8,13006
|
11
11
|
edsl/agents/__init__.py,sha256=B1dWfV4QWOo8cc2KeuetdFGeNhZ8XHc0Q8YhQW9k7BE,136
|
12
12
|
edsl/agents/descriptors.py,sha256=m8ND3-2-JbgNX1HGakBNLIeemwsgYa1mQxYO9GW33hw,2934
|
13
13
|
edsl/agents/prompt_helpers.py,sha256=rHUxM_F0kCOkJmnhCyK-amFKViAYvpRRLD8LHFLGqQw,5023
|
@@ -40,18 +40,17 @@ edsl/conjure/__init__.py,sha256=1lPYFjV73GzYYSXiTyxopM4nKcXVHumEEo0fe06DbMo,535
|
|
40
40
|
edsl/conjure/examples/placeholder.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
41
41
|
edsl/conjure/naming_utilities.py,sha256=8uoGaCPZQKLwz2HudtsFSovivTGumQrFYxXxck5WUZQ,4964
|
42
42
|
edsl/conjure/utilities.py,sha256=yRdOJx9KIpWXMx41Bbfysx7Zd4v2ROwca5L4T1rmtQM,5539
|
43
|
-
edsl/conversation/Conversation.py,sha256=
|
43
|
+
edsl/conversation/Conversation.py,sha256=NdWH62XpcF6hoaG0ScMho_c3TO7PfBnbdlppUN-j07k,7627
|
44
44
|
edsl/conversation/car_buying.py,sha256=Quh2Q8O9YoCyTKJUy3li376QFIOcL1gX0y89w3wlSl4,1950
|
45
45
|
edsl/conversation/mug_negotiation.py,sha256=mjvAqErD4AjN3G2za2c-X-3axOShW-zAJUeiJqTxVPA,2616
|
46
46
|
edsl/conversation/next_speaker_utilities.py,sha256=bqr5JglCd6bdLc9IZ5zGOAsmN2F4ERiubSMYvZIG7qk,3629
|
47
|
-
edsl/coop/PriceFetcher.py,sha256=
|
47
|
+
edsl/coop/PriceFetcher.py,sha256=7q8r1FqE9ap1CMi6WiE_pZQhYxEqG9_tgPgGxLQYVX8,1894
|
48
48
|
edsl/coop/__init__.py,sha256=4iZCwJSzJVyjBYk8ggGxY2kZjq9dXVT1jhyPDNyew4I,115
|
49
|
-
edsl/coop/coop.py,sha256=
|
49
|
+
edsl/coop/coop.py,sha256=_wdT6Z-fFYGtAWLn1e98Vv8hgwhdJM2vH_2G-J2ugiI,28547
|
50
50
|
edsl/coop/utils.py,sha256=UZwljKYW_Yjw7RYcjOg3SW7fn1pyHQfJ1fM48TBNoss,3601
|
51
51
|
edsl/data/Cache.py,sha256=jDt0LoZjLpGnM8-CraQEcsQaVg--U3BiBR1zHj0nDn8,16536
|
52
52
|
edsl/data/CacheEntry.py,sha256=_5UiFaJQu_U-Z1_lEPt-h6Gaidp2Eunk02wOd3Ni3MQ,7252
|
53
53
|
edsl/data/CacheHandler.py,sha256=DxbfeT2nZGRu8yQkbWr2tyEnhNiClevMsd5KZMCq2f0,4793
|
54
|
-
edsl/data/RemoteCacheSync.py,sha256=is3j644YAZDPCt4bMxOZpXtJkCXLs_hoKukxQosKKXM,3628
|
55
54
|
edsl/data/SQLiteDict.py,sha256=V5Nfnxctgh4Iblqcw1KmbnkjtfmWrrombROSQ3mvg6A,8979
|
56
55
|
edsl/data/__init__.py,sha256=KBNGGEuGHq--D-TlpAQmvv_If906dJc1Gsy028zOx78,170
|
57
56
|
edsl/data/orm.py,sha256=Jz6rvw5SrlxwysTL0QI9r68EflKxeEBmf6j6himHDS8,238
|
@@ -60,7 +59,7 @@ edsl/enums.py,sha256=Z6nhaP8p3z0UJSfsCGb6VQUtGUKw3AK6yC0UDwOi05c,5247
|
|
60
59
|
edsl/exceptions/__init__.py,sha256=HVg-U-rJ0fRoG9Rws6gnK5S9B68SkPWDPsoD6KpMZ-A,1370
|
61
60
|
edsl/exceptions/agents.py,sha256=3SORFwFbMGrF6-vAL2GrKEVdPcXo7md_k2oYufnVXHA,673
|
62
61
|
edsl/exceptions/configuration.py,sha256=qH2sInNTndKlCLAaNgaXHyRFdKQHL7-dElB_j8wz9g4,351
|
63
|
-
edsl/exceptions/coop.py,sha256=
|
62
|
+
edsl/exceptions/coop.py,sha256=xDr7k_Tir6L5AxO6GMmoFyUjZ3DIenPQflpUkaTqJl0,38
|
64
63
|
edsl/exceptions/data.py,sha256=K24CjgwFiMWxrF1Z2dF6F7Vfrge_y9kMK_wsYYSaroU,209
|
65
64
|
edsl/exceptions/general.py,sha256=zAyJnppPjjxQAn6X3A5fetmv5FUR7kQDU58vwBKvAks,1114
|
66
65
|
edsl/exceptions/jobs.py,sha256=sSUATmzBIN1oINWuwPExxPqIWmfCo0XYj_yR4dJzVjo,803
|
@@ -75,39 +74,39 @@ edsl/inference_services/AzureAI.py,sha256=Xd3r4Y5OQReW-hG67ymK3LSDLiHj5hMFuvGEz5
|
|
75
74
|
edsl/inference_services/DeepInfraService.py,sha256=fWlH5sCNxf8eHPHxPPxJMEVWpCM9sDenkC8IZYqtXfA,515
|
76
75
|
edsl/inference_services/GoogleService.py,sha256=CeyQ2Db_cCFOIVvetSwsFLqenJFrg4EGoRYwIe7-7-U,5422
|
77
76
|
edsl/inference_services/GroqService.py,sha256=eDMq8d7YAlJ2689ywaoaPGvMgFfOiX1KYlF_vr97N6I,510
|
78
|
-
edsl/inference_services/InferenceServiceABC.py,sha256=
|
79
|
-
edsl/inference_services/InferenceServicesCollection.py,sha256=
|
77
|
+
edsl/inference_services/InferenceServiceABC.py,sha256=rXqorwbKqzlwui2cxum8_TRrBcfOkgB9s0xULHYGQ1Y,3709
|
78
|
+
edsl/inference_services/InferenceServicesCollection.py,sha256=EDyxnoSjGXhWob_ost7U8WUYjn1jgL_noB0-VlXBnOo,2810
|
80
79
|
edsl/inference_services/MistralAIService.py,sha256=7mUsBEZdEWIjfh4qMNemTT2xYMq7k0yuMLGtDTdfp4Y,3878
|
81
80
|
edsl/inference_services/OllamaService.py,sha256=oro9CRl8IUE2Ro-zE69Cr4Zaf6Gdw29XW5CFU-46E0k,498
|
82
81
|
edsl/inference_services/OpenAIService.py,sha256=wraTu62bZojmgAXHNG6pJMMPZiyO1pSDfY73LVaBR_I,7621
|
83
82
|
edsl/inference_services/TestService.py,sha256=-jTXkl_qLt1k8gJjRb0SMgTb9EY-XMTP-ZUL9AJcUCA,3009
|
84
83
|
edsl/inference_services/TogetherAIService.py,sha256=p_31ccrfN25kZF2xlAlUkb7w1EL4lGjmkSv-5qZ7TtY,6301
|
85
84
|
edsl/inference_services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
86
|
-
edsl/inference_services/models_available_cache.py,sha256=
|
85
|
+
edsl/inference_services/models_available_cache.py,sha256=HtGNaYgrxY2oPy-QruKhjj6LUzhGNqBhLHFWMoMi1E4,3312
|
87
86
|
edsl/inference_services/rate_limits_cache.py,sha256=HYslviz7mxF9U4CUTPAkoyBsiXjSju-YCp4HHir6e34,1398
|
88
87
|
edsl/inference_services/registry.py,sha256=Fn6va65MqD9lnFvT603ZnU7Ok8IW64M2MzOH57kf9-A,1240
|
89
88
|
edsl/inference_services/write_available.py,sha256=NNwhATlaMp8IYY635MSx-oYxt5X15acjAfaqYCo_I1Y,285
|
90
89
|
edsl/jobs/Answers.py,sha256=c4LpigQjdnMr7iJu8571C4FggGPVudfT7hbJgmgKW40,1821
|
91
|
-
edsl/jobs/Jobs.py,sha256=
|
90
|
+
edsl/jobs/Jobs.py,sha256=t37-_8PemRGfQABTyuXPYW53-4sevPWkvF6qeq8oLxc,40183
|
92
91
|
edsl/jobs/__init__.py,sha256=aKuAyd_GoalGj-k7djOoVwEbFUE2XLPlikXaA1_8yAg,32
|
93
92
|
edsl/jobs/buckets/BucketCollection.py,sha256=11CRisE1WAPcAlI3YJK3DVvu0AqSvv8KskXo4Q1waSk,2286
|
94
93
|
edsl/jobs/buckets/ModelBuckets.py,sha256=hxw_tzc0V42CiB7mh5jIxlgwDVJ-zFZhlLtKrHEg8ho,2419
|
95
94
|
edsl/jobs/buckets/TokenBucket.py,sha256=7fG4omzTcj5xC2iJLO9bfBkdAGs6Y3weXzlA3BgPr0E,9090
|
96
|
-
edsl/jobs/interviews/Interview.py,sha256=
|
97
|
-
edsl/jobs/interviews/InterviewExceptionCollection.py,sha256=
|
98
|
-
edsl/jobs/interviews/InterviewExceptionEntry.py,sha256=
|
95
|
+
edsl/jobs/interviews/Interview.py,sha256=epaxVw53gplPpDpj1n_ahL3Pibs8vqCasF9QjXve1do,24963
|
96
|
+
edsl/jobs/interviews/InterviewExceptionCollection.py,sha256=Ez8BCZUD3odqoY9h-gzYKKM8yaHynQ-eYw2uMDh7t98,3279
|
97
|
+
edsl/jobs/interviews/InterviewExceptionEntry.py,sha256=2ZQOrhoHvfZJx9p357BQUZCfMXGkuU4xITYLyFGK9sg,4806
|
99
98
|
edsl/jobs/interviews/InterviewStatistic.py,sha256=hY5d2EkIJ96NilPpZAvZZzZoxLXM7ss3xx5MIcKtTPs,1856
|
100
99
|
edsl/jobs/interviews/InterviewStatisticsCollection.py,sha256=_ZZ0fnZBQiIywP9Q_wWjpWhlfcPe2cn32GKut10t5RI,788
|
101
100
|
edsl/jobs/interviews/InterviewStatusDictionary.py,sha256=MSyys4hOWe1d8gfsUvAPbcKrs8YiPnz8jpufBSJL7SU,2485
|
102
101
|
edsl/jobs/interviews/InterviewStatusLog.py,sha256=6u0F8gf5tha39VQL-IK_QPkCsQAYVOx_IesX7TDDX_A,3252
|
103
102
|
edsl/jobs/interviews/ReportErrors.py,sha256=RSzDU2rWwtjfztj7sqaMab0quCiY-X2bG3AEOxhTim8,1745
|
104
103
|
edsl/jobs/interviews/interview_status_enum.py,sha256=KJ-1yLAHdX-p8TiFnM0M3v1tnBwkq4aMCuBX6-ytrI8,229
|
105
|
-
edsl/jobs/runners/JobsRunnerAsyncio.py,sha256=
|
104
|
+
edsl/jobs/runners/JobsRunnerAsyncio.py,sha256=SXWFTgTYQzqIaBjPQ2mRrxR3aGFMQyw2eD9wX8tZNkQ,12850
|
106
105
|
edsl/jobs/runners/JobsRunnerStatus.py,sha256=4eCh9sRpswGdKeSMW9pCGCAjJZa-OrWUPI7tsxIy_g4,12112
|
107
106
|
edsl/jobs/runners/JobsRunnerStatusData.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
108
107
|
edsl/jobs/tasks/QuestionTaskCreator.py,sha256=K-xATHIXMWPTMOnms5UDW30eTIlIfebf7oOEfwrh1ME,10072
|
109
108
|
edsl/jobs/tasks/TaskCreators.py,sha256=XqAbNU33378Z4PQncokbfJwnKt3KHR9aqa5fKYRDpfg,2694
|
110
|
-
edsl/jobs/tasks/TaskHistory.py,sha256=
|
109
|
+
edsl/jobs/tasks/TaskHistory.py,sha256=xRSo22ipyUSJ15w_k2Jc3dZ04VLwft8zfvm3smAIYrA,14227
|
111
110
|
edsl/jobs/tasks/TaskStatusLog.py,sha256=bqH36a32F12fjX-M-4lNOhHaK2-WLFzKE-r0PxZPRjI,546
|
112
111
|
edsl/jobs/tasks/task_status_enum.py,sha256=DOyrz61YlIS8R1W7izJNphcLrJ7I_ReUlfdRmk23h0Q,5333
|
113
112
|
edsl/jobs/tokens/InterviewTokenUsage.py,sha256=u_6-IHpGFwZ6qMEXr24-jyLVUSSp4dSs_4iAZsBv7O4,1100
|
@@ -134,7 +133,7 @@ edsl/questions/QuestionBudget.py,sha256=TJgPsyqafJdJw5if0zVxh7zHloourINUqUWfWIlR
|
|
134
133
|
edsl/questions/QuestionCheckBox.py,sha256=wC_doEdNZi4y8Uz-tXZyQ2GYS5wQKOWhbVUnyVLoACU,12840
|
135
134
|
edsl/questions/QuestionExtract.py,sha256=PlXwMeZgPAFBXIHSXpFMYTToag-HwA9C7u6-Z3bQMek,6103
|
136
135
|
edsl/questions/QuestionFreeText.py,sha256=uXJxrrAGCq0-J6WpO6TBNFBNOC2ztoEVa-2UMXuwlak,3384
|
137
|
-
edsl/questions/QuestionFunctional.py,sha256=
|
136
|
+
edsl/questions/QuestionFunctional.py,sha256=yZQFLQAxfNsAIETffFoBr-Ltb2oFPeywu-nhm9qjYRc,5133
|
138
137
|
edsl/questions/QuestionList.py,sha256=vs2AE8OnbwVsly-sorb9dfIibdF1BpOaCRYyvwXYSzY,7209
|
139
138
|
edsl/questions/QuestionMultipleChoice.py,sha256=Yj94-6fwFqDI9UvjwSCOfKnp4gBB86XMmCsL7lbX-t4,10292
|
140
139
|
edsl/questions/QuestionNumerical.py,sha256=_jMZ28DZHYAv_g3Y3vCnmzerMs995on0Ng6j4pDcfHo,4959
|
@@ -200,11 +199,11 @@ edsl/questions/templates/top_k/question_presentation.jinja,sha256=2u8XIkFPWzOuhb
|
|
200
199
|
edsl/questions/templates/yes_no/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
201
200
|
edsl/questions/templates/yes_no/answering_instructions.jinja,sha256=UAcssfcYeW8zytmPOVJOVQEdwdvlRspE8WnatYvreJQ,172
|
202
201
|
edsl/questions/templates/yes_no/question_presentation.jinja,sha256=hoEVj4GQD3EYnR2AStXkMFOJeqISNoEVzBd8-cx2yWg,273
|
203
|
-
edsl/results/Dataset.py,sha256=
|
202
|
+
edsl/results/Dataset.py,sha256=XeCWNcni1rde9iVzmC1WTIne2cip4-f2gQL5iaJfXNw,9202
|
204
203
|
edsl/results/DatasetExportMixin.py,sha256=-YR-UeuIW_8u0a8HnQ9R6V41DxCq22_AlsD48fXv0sw,25890
|
205
204
|
edsl/results/DatasetTree.py,sha256=nwEgnWBqRXUxagSCEgqwikmIo8ztUxaF-QH-m-8myyQ,4985
|
206
|
-
edsl/results/Result.py,sha256=
|
207
|
-
edsl/results/Results.py,sha256=
|
205
|
+
edsl/results/Result.py,sha256=o3Tg07loDcwNTb6wPgV_qS7_REkwcMVouc9t_-zwkpw,15469
|
206
|
+
edsl/results/Results.py,sha256=zp4yDt-rPqgEPpv2xCGppQIzzwiKX-BbUpnJtY739L4,40807
|
208
207
|
edsl/results/ResultsDBMixin.py,sha256=Hc08aOiArBf9jbxI5uV4VL4wT6BLOkaaEgTMb3zyTUI,7922
|
209
208
|
edsl/results/ResultsExportMixin.py,sha256=XizBsPNxziyffirMA4kS7UHpYM1WIE4s1K-B7TqTfDw,1266
|
210
209
|
edsl/results/ResultsFetchMixin.py,sha256=VEa0TKDcXbnTinSKs9YaE4WjOSLmlp9Po1_9kklFvSo,848
|
@@ -213,13 +212,13 @@ edsl/results/ResultsToolsMixin.py,sha256=mseEFxJCf9sjXdIxpjITt_UZBwdXxw2o2VLg5jM
|
|
213
212
|
edsl/results/Selector.py,sha256=4AsFD71FKTFY1a0_AImsYWcYKx-RXPG6RgwsAvuNW3k,4403
|
214
213
|
edsl/results/__init__.py,sha256=2YcyiVtXi-3vIV0ZzOy1PqBLm2gaziufJVi4fdNrAt8,80
|
215
214
|
edsl/results/tree_explore.py,sha256=hQjiO4E71rIOPDgEHgK8T8ukxqoNdgX_tvyiDlG4_9U,4624
|
216
|
-
edsl/scenarios/FileStore.py,sha256=
|
217
|
-
edsl/scenarios/Scenario.py,sha256=
|
215
|
+
edsl/scenarios/FileStore.py,sha256=V_zn2RmVclcBQTvqghotnTO97YHWUXqeVfN7eMfpfUM,13929
|
216
|
+
edsl/scenarios/Scenario.py,sha256=ZG1x4_MmWP9j0gakLwsxOZ7ESMy3ifwBMhgQlHvsYo8,16809
|
218
217
|
edsl/scenarios/ScenarioHtmlMixin.py,sha256=EmugmbPJYW5eZS30rM6pDMDQD9yrrvHjmgZWB1qBfq4,1882
|
219
218
|
edsl/scenarios/ScenarioList.py,sha256=1zbwDICXbvtUGA5bDlhThNp9pfhBGIHIqhK2cX-th50,40942
|
220
219
|
edsl/scenarios/ScenarioListExportMixin.py,sha256=wfffY9xy_1QyIM-1xnisr64izSLjmyuotUYY5iDLodc,1681
|
221
220
|
edsl/scenarios/ScenarioListPdfMixin.py,sha256=z_H2sZn5SCSq6nRLSU5jefaOlh4sqJLyOY_Ld0XCR18,8332
|
222
|
-
edsl/scenarios/__init__.py,sha256=
|
221
|
+
edsl/scenarios/__init__.py,sha256=KRwZCLf2R0qyJvv1NGbd8M51Bt6Ia6Iylg-Xq_2Fa6M,98
|
223
222
|
edsl/shared.py,sha256=lgLa-mCk2flIhxXarXLtfXZjXG_6XHhC2A3O8yRTjXc,20
|
224
223
|
edsl/study/ObjectEntry.py,sha256=e3xRPH8wCN8Pum5HZsQRYgnSoauSvjXunIEH79wu5A8,5788
|
225
224
|
edsl/study/ProofOfWork.py,sha256=FaqYtLgeiTEQXWKukPgPUTWMcIN5t1FR7h7Re8QEtgc,3433
|
@@ -231,7 +230,7 @@ edsl/surveys/Memory.py,sha256=-ikOtkkQldGB_BkPCW3o7AYwV5B_pIwlREw7aVCSHaQ,1113
|
|
231
230
|
edsl/surveys/MemoryPlan.py,sha256=VESoPM0C_4LUngkskE51rOca_4vbXC2yjfwrBXtHfHA,9029
|
232
231
|
edsl/surveys/Rule.py,sha256=RlERae5n5jFTnEp597UF50YGXtywECU1nulYdsSlfh0,12223
|
233
232
|
edsl/surveys/RuleCollection.py,sha256=VBx9-OuBBFIJlRYfpbWIjMVFSA5iMwTzdx5yl8giQA8,14871
|
234
|
-
edsl/surveys/Survey.py,sha256=
|
233
|
+
edsl/surveys/Survey.py,sha256=EYXkA0CzgpTIlwnVG21NQgBUo-vMRZhXrkP2sbT5hq4,72125
|
235
234
|
edsl/surveys/SurveyCSS.py,sha256=NjJezs2sTlgFprN6IukjGKwNYmNdXnLjzV2w5K4z4RI,8415
|
236
235
|
edsl/surveys/SurveyExportMixin.py,sha256=Kvkd2ku2Kemsn2Nw-Yt8GTnGFcUqfEiKznmisAeO7ck,8339
|
237
236
|
edsl/surveys/SurveyFlowVisualizationMixin.py,sha256=dEG_f-L0ZAyWU5Ta584IX5GZurjVt1tbIISo5z61Jvg,4004
|
@@ -240,7 +239,7 @@ edsl/surveys/__init__.py,sha256=vjMYVlP95fHVqqw2FfKXRuYbTArZkZr1nK4FnXzZWzs,129
|
|
240
239
|
edsl/surveys/base.py,sha256=XJHGEbbsH6hlYYkmI4isVLD8guLz8BdhR-eQRL78mc4,1115
|
241
240
|
edsl/surveys/descriptors.py,sha256=3B-hBVvGpLlVBCyOnPuxkLjesvpr0QIuATbggp_MJ7o,2076
|
242
241
|
edsl/surveys/instructions/ChangeInstruction.py,sha256=XDLuI5nVI60iJz1w1kLaKmYryAYE0XIyRbElBtNjVVM,1265
|
243
|
-
edsl/surveys/instructions/Instruction.py,sha256=
|
242
|
+
edsl/surveys/instructions/Instruction.py,sha256=WaTGihAQ6lCtm5W4vknTamkPzDp-eIAirdtGV37fdbc,925
|
244
243
|
edsl/surveys/instructions/InstructionCollection.py,sha256=eO-i9zgbk8q0D8hnawDrioS-iqXOEE7eKm5cgYNgwrU,2931
|
245
244
|
edsl/surveys/instructions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
246
245
|
edsl/templates/error_reporting/base.html,sha256=IkV24ZaUCNX303ZqVTWkFsJOnu5BG_SULrKN2YejUxQ,552
|
@@ -273,7 +272,7 @@ edsl/utilities/interface.py,sha256=AaKpWiwWBwP2swNXmnFlIf3ZFsjfsR5bjXQAW47tD-8,1
|
|
273
272
|
edsl/utilities/repair_functions.py,sha256=tftmklAqam6LOQQu_-9U44N-llycffhW8LfO63vBmNw,929
|
274
273
|
edsl/utilities/restricted_python.py,sha256=5-_zUhrNbos7pLhDl9nr8d24auRlquR6w-vKkmNjPiA,2060
|
275
274
|
edsl/utilities/utilities.py,sha256=gqMtWWNEZkWLiRR9vHW-VRNy2bStEPlJ-I2aK9CwFiQ,11367
|
276
|
-
edsl-0.1.36.dist-info/LICENSE,sha256=_qszBDs8KHShVYcYzdMz3HNMtH-fKN_p5zjoVAVumFc,1111
|
277
|
-
edsl-0.1.36.dist-info/METADATA,sha256=
|
278
|
-
edsl-0.1.36.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
279
|
-
edsl-0.1.36.dist-info/RECORD,,
|
275
|
+
edsl-0.1.36.dev2.dist-info/LICENSE,sha256=_qszBDs8KHShVYcYzdMz3HNMtH-fKN_p5zjoVAVumFc,1111
|
276
|
+
edsl-0.1.36.dev2.dist-info/METADATA,sha256=eM41iPj1uG865s1AxN3NCkcl0He6KHssjIqlfFGRrdg,4476
|
277
|
+
edsl-0.1.36.dev2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
278
|
+
edsl-0.1.36.dev2.dist-info/RECORD,,
|