edsl 0.1.29.dev1__py3-none-any.whl → 0.1.29.dev3__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/__init__.py +1 -1
- edsl/__version__.py +1 -1
- edsl/agents/AgentList.py +20 -1
- edsl/language_models/ModelList.py +2 -2
- edsl/results/Results.py +6 -8
- edsl/study/ObjectEntry.py +89 -13
- edsl/study/ProofOfWork.py +5 -2
- edsl/study/SnapShot.py +4 -8
- edsl/study/Study.py +27 -14
- edsl/study/__init__.py +2 -0
- {edsl-0.1.29.dev1.dist-info → edsl-0.1.29.dev3.dist-info}/METADATA +1 -1
- {edsl-0.1.29.dev1.dist-info → edsl-0.1.29.dev3.dist-info}/RECORD +15 -15
- {edsl-0.1.29.dev1.dist-info → edsl-0.1.29.dev3.dist-info}/LICENSE +0 -0
- {edsl-0.1.29.dev1.dist-info → edsl-0.1.29.dev3.dist-info}/WHEEL +0 -0
- {edsl-0.1.29.dev1.dist-info → edsl-0.1.29.dev3.dist-info}/entry_points.txt +0 -0
edsl/__init__.py
CHANGED
@@ -37,6 +37,6 @@ from edsl.shared import shared_globals
|
|
37
37
|
from edsl.jobs import Jobs
|
38
38
|
from edsl.notebooks import Notebook
|
39
39
|
from edsl.study.Study import Study
|
40
|
-
from edsl.coop.coop import Coop
|
41
40
|
from edsl.conjure.Conjure import Conjure
|
42
41
|
from edsl.language_models.ModelList import ModelList
|
42
|
+
from edsl.coop.coop import Coop
|
edsl/__version__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "0.1.29.
|
1
|
+
__version__ = "0.1.29.dev3"
|
edsl/agents/AgentList.py
CHANGED
@@ -12,7 +12,7 @@ Example usage:
|
|
12
12
|
|
13
13
|
from __future__ import annotations
|
14
14
|
from collections import UserList
|
15
|
-
from typing import Optional, Union, Sequence
|
15
|
+
from typing import Optional, Union, Sequence, List, Any
|
16
16
|
from rich import print_json
|
17
17
|
from rich.table import Table
|
18
18
|
import json
|
@@ -241,6 +241,25 @@ class AgentList(UserList, Base):
|
|
241
241
|
|
242
242
|
"""
|
243
243
|
return cls([Agent.example(), Agent.example()])
|
244
|
+
|
245
|
+
@classmethod
|
246
|
+
def from_list(self, trait_name:str, values: List[Any]):
|
247
|
+
"""Create an AgentList from a list of values.
|
248
|
+
|
249
|
+
:param trait_name: The name of the trait.
|
250
|
+
:param values: A list of values.
|
251
|
+
"""
|
252
|
+
return AgentList([Agent({trait_name: value}) for value in values])
|
253
|
+
|
254
|
+
def __mul__(self, other: AgentList) -> AgentList:
|
255
|
+
"""Takes the cross product of two AgentLists."""
|
256
|
+
from itertools import product
|
257
|
+
|
258
|
+
new_sl = []
|
259
|
+
for s1, s2 in list(product(self, other)):
|
260
|
+
new_sl.append(s1 + s2)
|
261
|
+
return AgentList(new_sl)
|
262
|
+
|
244
263
|
|
245
264
|
def code(self, string=True) -> Union[str, list[str]]:
|
246
265
|
"""Return code to construct an AgentList.
|
@@ -56,11 +56,11 @@ class ModelList(Base, UserList):
|
|
56
56
|
return {"models": [model._to_dict() for model in self]}
|
57
57
|
|
58
58
|
@classmethod
|
59
|
-
def from_names(self, *args):
|
59
|
+
def from_names(self, *args, **kwargs):
|
60
60
|
"""A a model list from a list of names"""
|
61
61
|
if len(args) == 1 and isinstance(args[0], list):
|
62
62
|
args = args[0]
|
63
|
-
return ModelList([Model(model_name) for model_name in args])
|
63
|
+
return ModelList([Model(model_name, **kwargs) for model_name in args])
|
64
64
|
|
65
65
|
@add_edsl_version
|
66
66
|
def to_dict(self):
|
edsl/results/Results.py
CHANGED
@@ -165,13 +165,7 @@ class Results(UserList, Mixins, Base):
|
|
165
165
|
)
|
166
166
|
|
167
167
|
def __repr__(self) -> str:
|
168
|
-
|
169
|
-
return f"""Results object
|
170
|
-
Size: {len(self.data)}.
|
171
|
-
Survey questions: {[q.question_name for q in self.survey.questions]}.
|
172
|
-
Created columns: {self.created_columns}
|
173
|
-
Hash: {hash(self)}
|
174
|
-
"""
|
168
|
+
return f"Results(data = {self.data}, survey = {repr(self.survey)}, created_columns = {self.created_columns})"
|
175
169
|
|
176
170
|
def _repr_html_(self) -> str:
|
177
171
|
json_str = json.dumps(self.to_dict()["data"], indent=4)
|
@@ -759,7 +753,10 @@ class Results(UserList, Mixins, Base):
|
|
759
753
|
|
760
754
|
def sort_by(self, *columns: str, reverse: bool = False) -> Results:
|
761
755
|
import warnings
|
762
|
-
|
756
|
+
|
757
|
+
warnings.warn(
|
758
|
+
"sort_by is deprecated. Use order_by instead.", DeprecationWarning
|
759
|
+
)
|
763
760
|
return self.order_by(*columns, reverse=reverse)
|
764
761
|
|
765
762
|
def order_by(self, *columns: str, reverse: bool = False) -> Results:
|
@@ -800,6 +797,7 @@ class Results(UserList, Mixins, Base):
|
|
800
797
|
│ Great │
|
801
798
|
└──────────────┘
|
802
799
|
"""
|
800
|
+
|
803
801
|
def to_numeric_if_possible(v):
|
804
802
|
try:
|
805
803
|
return float(v)
|
edsl/study/ObjectEntry.py
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
import time
|
2
|
-
|
2
|
+
import webbrowser
|
3
|
+
from typing import Any, Dict, Optional, Type
|
4
|
+
from edsl import QuestionBase
|
5
|
+
from edsl.Base import RegisterSubclassesMeta
|
3
6
|
|
4
7
|
|
5
8
|
class ObjectEntry:
|
@@ -12,6 +15,16 @@ class ObjectEntry:
|
|
12
15
|
created_at: Optional[float] = None,
|
13
16
|
edsl_class_name: Optional[str] = None,
|
14
17
|
):
|
18
|
+
"""
|
19
|
+
Initialize an ObjectEntry instance.
|
20
|
+
|
21
|
+
:param variable_name: The name of the variable.
|
22
|
+
:param object: The object being wrapped.
|
23
|
+
:param description: A description of the object.
|
24
|
+
:param coop_info: Optional Coop information dictionary.
|
25
|
+
:param created_at: Optional creation timestamp. Defaults to current time.
|
26
|
+
:param edsl_class_name: Optional EDSL class name. Defaults to object's class name.
|
27
|
+
"""
|
15
28
|
self.created_at = created_at or time.time()
|
16
29
|
self.variable_name = variable_name
|
17
30
|
self.object = object
|
@@ -20,22 +33,33 @@ class ObjectEntry:
|
|
20
33
|
self.coop_info = coop_info
|
21
34
|
|
22
35
|
@classmethod
|
23
|
-
def _get_class(
|
24
|
-
"
|
25
|
-
|
36
|
+
def _get_class(cls, object_dict: Dict[str, Any]) -> Type:
|
37
|
+
"""
|
38
|
+
Get the class of an object from its dictionary representation.
|
39
|
+
|
40
|
+
:param object_dict: The dictionary representation of the object.
|
41
|
+
:return: The class of the object.
|
42
|
+
"""
|
43
|
+
class_name = object_dict["edsl_class_name"]
|
26
44
|
if class_name == "QuestionBase":
|
27
|
-
from edsl import QuestionBase
|
28
|
-
|
29
45
|
return QuestionBase
|
30
46
|
else:
|
31
|
-
from edsl.Base import RegisterSubclassesMeta
|
32
|
-
|
33
47
|
return RegisterSubclassesMeta._registry[class_name]
|
34
48
|
|
35
49
|
def __repr__(self) -> str:
|
50
|
+
"""
|
51
|
+
Return a string representation of the ObjectEntry instance.
|
52
|
+
|
53
|
+
:return: A string representation of the ObjectEntry instance.
|
54
|
+
"""
|
36
55
|
return f"ObjectEntry(variable_name='{self.variable_name}', object={self.object!r}, description='{self.description}', coop_info={self.coop_info}, created_at={self.created_at}, edsl_class_name='{self.edsl_class_name}')"
|
37
56
|
|
38
57
|
def to_dict(self) -> Dict[str, Any]:
|
58
|
+
"""
|
59
|
+
Convert the ObjectEntry instance to a dictionary.
|
60
|
+
|
61
|
+
:return: A dictionary representation of the ObjectEntry instance.
|
62
|
+
"""
|
39
63
|
return {
|
40
64
|
"created_at": self.created_at,
|
41
65
|
"variable_name": self.variable_name,
|
@@ -47,34 +71,65 @@ class ObjectEntry:
|
|
47
71
|
|
48
72
|
@classmethod
|
49
73
|
def from_dict(cls, d: Dict[str, Any]) -> "ObjectEntry":
|
74
|
+
"""
|
75
|
+
Create an ObjectEntry instance from a dictionary.
|
76
|
+
|
77
|
+
:param d: The dictionary representation of the ObjectEntry instance.
|
78
|
+
:return: An ObjectEntry instance.
|
79
|
+
"""
|
50
80
|
d["object"] = cls._get_class(d["object"]).from_dict(d["object"])
|
51
81
|
return cls(**d)
|
52
82
|
|
53
83
|
@property
|
54
84
|
def hash(self) -> str:
|
85
|
+
"""
|
86
|
+
Compute the hash of the object.
|
87
|
+
|
88
|
+
:return: The hash of the object as a string.
|
89
|
+
"""
|
55
90
|
return str(hash(self.object))
|
56
91
|
|
57
92
|
def add_to_namespace(self) -> None:
|
93
|
+
"""
|
94
|
+
Add the object to the global namespace using its variable name.
|
95
|
+
"""
|
58
96
|
globals()[self.variable_name] = self.object
|
59
97
|
|
60
98
|
@property
|
61
99
|
def coop_info(self) -> Optional[Dict[str, Any]]:
|
100
|
+
"""
|
101
|
+
Get the Coop information for the object.
|
102
|
+
|
103
|
+
:return: The Coop information dictionary, if available.
|
104
|
+
"""
|
62
105
|
return self._coop_info
|
63
106
|
|
64
107
|
@coop_info.setter
|
65
108
|
def coop_info(self, coop_info: Optional[Dict[str, Any]]) -> None:
|
109
|
+
"""
|
110
|
+
Set the Coop information for the object.
|
111
|
+
|
112
|
+
:param coop_info: The Coop information dictionary.
|
113
|
+
"""
|
66
114
|
self._coop_info = coop_info
|
67
115
|
|
68
116
|
def view_on_coop(self) -> None:
|
117
|
+
"""
|
118
|
+
Open the object's Coop URL in a web browser.
|
119
|
+
"""
|
69
120
|
if self.coop_info is None:
|
70
121
|
print("Object not pushed to coop")
|
71
122
|
return
|
72
|
-
url = self.coop_info
|
73
|
-
import webbrowser
|
74
|
-
|
123
|
+
url = self.coop_info.get("url")
|
75
124
|
webbrowser.open(url)
|
76
125
|
|
77
|
-
def push(self, refresh: bool = False) -> Dict[str, Any]:
|
126
|
+
def push(self, refresh: Optional[bool] = False) -> Dict[str, Any]:
|
127
|
+
"""
|
128
|
+
Push the object to the Coop.
|
129
|
+
|
130
|
+
:param refresh: Whether to refresh the Coop entry for the object.
|
131
|
+
:return: The Coop info dictionary.
|
132
|
+
"""
|
78
133
|
if self.coop_info is None or refresh:
|
79
134
|
self.coop_info = self.object.push(description=self.description)
|
80
135
|
print(
|
@@ -85,13 +140,34 @@ class ObjectEntry:
|
|
85
140
|
f"Object {self.variable_name} already pushed to coop with info: {self._coop_info}"
|
86
141
|
)
|
87
142
|
|
143
|
+
def __eq__(self, other: "ObjectEntry") -> bool:
|
144
|
+
"""
|
145
|
+
Check if two ObjectEntry instances are equal.
|
146
|
+
|
147
|
+
:param other: The other ObjectEntry instance.
|
148
|
+
:return: True if the two instances are equal, False otherwise.
|
149
|
+
"""
|
150
|
+
# if the other item is not "ObjectEntry" type, return False
|
151
|
+
if not isinstance(other, ObjectEntry):
|
152
|
+
return False
|
153
|
+
|
154
|
+
return (
|
155
|
+
self.variable_name == other.variable_name
|
156
|
+
and self.object == other.object
|
157
|
+
and self.description == other.description
|
158
|
+
and self.coop_info == other.coop_info
|
159
|
+
and self.created_at == other.created_at
|
160
|
+
and self.edsl_class_name == other.edsl_class_name
|
161
|
+
)
|
162
|
+
|
88
163
|
|
89
164
|
if __name__ == "__main__":
|
90
165
|
from edsl import QuestionFreeText
|
166
|
+
from edsl.study import ObjectEntry
|
91
167
|
|
92
168
|
q = QuestionFreeText.example()
|
93
169
|
|
94
170
|
oe = ObjectEntry("q", q, "This is a question")
|
95
171
|
d = oe.to_dict()
|
96
172
|
new_oe = ObjectEntry.from_dict(d)
|
97
|
-
|
173
|
+
new_oe == oe
|
edsl/study/ProofOfWork.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import hashlib
|
2
2
|
import time
|
3
|
-
from typing import
|
3
|
+
from typing import Any, Dict, List, Optional
|
4
4
|
|
5
5
|
|
6
6
|
class ProofOfWork:
|
@@ -16,7 +16,10 @@ class ProofOfWork:
|
|
16
16
|
self.input_data = input_data
|
17
17
|
|
18
18
|
def to_dict(self) -> Dict[str, Any]:
|
19
|
-
return {
|
19
|
+
return {
|
20
|
+
"input_data": self.input_data,
|
21
|
+
"proof": self.proof,
|
22
|
+
}
|
20
23
|
|
21
24
|
@classmethod
|
22
25
|
def from_dict(cls, data: Dict[str, Any]) -> "ProofOfWork":
|
edsl/study/SnapShot.py
CHANGED
@@ -1,16 +1,11 @@
|
|
1
|
-
from typing import Generator
|
2
1
|
import inspect
|
2
|
+
from typing import Generator, List, Optional
|
3
3
|
|
4
4
|
|
5
5
|
class SnapShot:
|
6
|
-
def __init__(self, namespace, exclude=None):
|
6
|
+
def __init__(self, namespace, exclude: Optional[List] = None):
|
7
7
|
self.namespace = namespace
|
8
|
-
|
9
|
-
if exclude is None:
|
10
|
-
self.exclude = []
|
11
|
-
else:
|
12
|
-
self.exclude = exclude
|
13
|
-
|
8
|
+
self.exclude = exclude or []
|
14
9
|
self.edsl_objects = dict(self._get_edsl_objects(namespace=self.namespace))
|
15
10
|
self.edsl_classes = dict(self._get_edsl_classes(namespace=self.namespace))
|
16
11
|
|
@@ -63,6 +58,7 @@ class SnapShot:
|
|
63
58
|
from edsl.study.Study import Study
|
64
59
|
|
65
60
|
for name, value in namespace.items():
|
61
|
+
# TODO check this code logic (if there are other objects with to_dict method that are not from edsl)
|
66
62
|
if (
|
67
63
|
hasattr(value, "to_dict")
|
68
64
|
and not inspect.isclass(value)
|
edsl/study/Study.py
CHANGED
@@ -1,23 +1,19 @@
|
|
1
|
-
import os
|
2
|
-
import platform
|
3
|
-
import socket
|
4
1
|
import copy
|
5
2
|
import inspect
|
6
3
|
import json
|
7
|
-
|
4
|
+
import os
|
5
|
+
import platform
|
6
|
+
import socket
|
8
7
|
from datetime import datetime
|
9
|
-
|
10
|
-
# from edsl.Base import Base
|
8
|
+
from typing import Dict, Optional, Union
|
11
9
|
from edsl import Cache, set_session_cache, unset_session_cache
|
12
10
|
from edsl.utilities.utilities import dict_hash
|
13
|
-
|
14
11
|
from edsl.study.ObjectEntry import ObjectEntry
|
15
12
|
from edsl.study.ProofOfWork import ProofOfWork
|
16
13
|
from edsl.study.SnapShot import SnapShot
|
14
|
+
from uuid import UUID
|
17
15
|
|
18
|
-
|
19
|
-
class _StudyFrameMarker:
|
20
|
-
pass
|
16
|
+
# from edsl.Base import Base
|
21
17
|
|
22
18
|
|
23
19
|
class Study:
|
@@ -58,7 +54,7 @@ class Study:
|
|
58
54
|
proof_of_work=None,
|
59
55
|
proof_of_work_difficulty: int = None,
|
60
56
|
namespace: Optional[dict] = None,
|
61
|
-
verbose=True,
|
57
|
+
verbose: Optional[bool] = True,
|
62
58
|
):
|
63
59
|
"""
|
64
60
|
:param name: The name of the study.
|
@@ -469,11 +465,28 @@ class Study:
|
|
469
465
|
|
470
466
|
def push(self, refresh=False) -> None:
|
471
467
|
"""Push the objects to coop."""
|
472
|
-
|
473
|
-
|
468
|
+
|
469
|
+
from edsl import Coop
|
470
|
+
|
471
|
+
coop = Coop()
|
472
|
+
coop.create(self, description=self.description)
|
473
|
+
|
474
|
+
@classmethod
|
475
|
+
def pull(cls, id_or_url: Union[str, UUID], exec_profile=None):
|
476
|
+
"""Pull the object from coop."""
|
477
|
+
from edsl.coop import Coop
|
478
|
+
|
479
|
+
if id_or_url.startswith("http"):
|
480
|
+
uuid_value = id_or_url.split("/")[-1]
|
481
|
+
else:
|
482
|
+
uuid_value = id_or_url
|
483
|
+
|
484
|
+
c = Coop()
|
485
|
+
|
486
|
+
return c._get_base(cls, uuid_value, exec_profile=exec_profile)
|
474
487
|
|
475
488
|
def __repr__(self):
|
476
|
-
return f"""Study(name = {self.name}, description = {self.description}, objects = {self.objects}, cache = {self.cache}, filename = "{self.filename}", coop = {self.coop}, use_study_cache = {self.use_study_cache}, overwrite_on_change = {self.overwrite_on_change})"""
|
489
|
+
return f"""Study(name = "{self.name}", description = "{self.description}", objects = {self.objects}, cache = {self.cache}, filename = "{self.filename}", coop = {self.coop}, use_study_cache = {self.use_study_cache}, overwrite_on_change = {self.overwrite_on_change})"""
|
477
490
|
|
478
491
|
|
479
492
|
if __name__ == "__main__":
|
edsl/study/__init__.py
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
edsl/Base.py,sha256=7xc-2fmIGVx-yofU54w5eDU6WSl1AwgrNP2YncDd93M,8847
|
2
2
|
edsl/BaseDiff.py,sha256=RoVEh52UJs22yMa7k7jv8se01G62jJNWnBzaZngo-Ug,8260
|
3
|
-
edsl/__init__.py,sha256=
|
4
|
-
edsl/__version__.py,sha256=
|
3
|
+
edsl/__init__.py,sha256=k_qOASWIvMoJTJI9m3t-v-VxFlEvp8Ks8ZtO97vrZ5g,1347
|
4
|
+
edsl/__version__.py,sha256=KTeLw349pnwI0-4pMOlda9v4escQRhAXeA60NAeoZ4M,28
|
5
5
|
edsl/agents/Agent.py,sha256=_PvcQIjeJpyn-ZLOPl3d8f0UZ2AmW-PuHjl9nuhzOEY,25955
|
6
|
-
edsl/agents/AgentList.py,sha256=
|
6
|
+
edsl/agents/AgentList.py,sha256=GK4AeQ7u9_1bR29UqiJOVnq7lqL_4JuUxGEHuM3ZQF0,9099
|
7
7
|
edsl/agents/Invigilator.py,sha256=vUjNsQrE724Cepr1XvOp2CTER7GBGZ8XoVl6yzfbeP0,10061
|
8
8
|
edsl/agents/InvigilatorBase.py,sha256=IRk2aVSJM3cTXgyuuoc7Dc9oBs311UK0mjkTDmgCjbU,7282
|
9
9
|
edsl/agents/PromptConstructionMixin.py,sha256=Yovq-7wZG8i95QLEee90Xi3AFp3TpbzGhM-kdKNLZNg,5129
|
@@ -93,7 +93,7 @@ edsl/jobs/tasks/task_status_enum.py,sha256=DOyrz61YlIS8R1W7izJNphcLrJ7I_ReUlfdRm
|
|
93
93
|
edsl/jobs/tokens/InterviewTokenUsage.py,sha256=u_6-IHpGFwZ6qMEXr24-jyLVUSSp4dSs_4iAZsBv7O4,1100
|
94
94
|
edsl/jobs/tokens/TokenUsage.py,sha256=odj2-wDNEbHl9noyFAQ0DSKV0D9cv3aDOpmXufKZ8O4,1323
|
95
95
|
edsl/language_models/LanguageModel.py,sha256=QoltKz6IEK59jKPG3dEI1Si5_9UgqzIAmdTLz5q54nU,19039
|
96
|
-
edsl/language_models/ModelList.py,sha256=
|
96
|
+
edsl/language_models/ModelList.py,sha256=NAGDfr2bV52y3ITE0_5PbyJYrh-fp7dOu2IWiVawhGQ,2677
|
97
97
|
edsl/language_models/RegisterLanguageModelsMeta.py,sha256=2bvWrVau2BRo-Bb1aO-QATH8xxuW_tF7NmqBMGDOfSg,8191
|
98
98
|
edsl/language_models/__init__.py,sha256=bvY7Gy6VkX1gSbNkRbGPS-M1kUnb0EohL0FSagaEaTs,109
|
99
99
|
edsl/language_models/registry.py,sha256=J7blAbRFHxr2nWSoe61G4p-6kOgzUlKclJ55xVldKWc,3191
|
@@ -142,7 +142,7 @@ edsl/questions/question_registry.py,sha256=7JvkwFzItwNTXjMwbdfpbZQT_WAXOBxjlSJGC
|
|
142
142
|
edsl/questions/settings.py,sha256=Qk2imv_7N8uFGLoTEr163lbaKPbD2Begd17Hbh4GZKA,290
|
143
143
|
edsl/results/Dataset.py,sha256=v_6e1khpfs5Ft-b7GgTKhitr4l9sys4rb_4z-dOdj68,7737
|
144
144
|
edsl/results/Result.py,sha256=IvUFq23LwlBP7JN1QDap1fPTTIPUC0QlYEE4lsiKRqI,13913
|
145
|
-
edsl/results/Results.py,sha256=
|
145
|
+
edsl/results/Results.py,sha256=HkONhTks0st9wc6dmBbgKOBq69ngXNXhGgqUZ33Y57w,34327
|
146
146
|
edsl/results/ResultsDBMixin.py,sha256=Dv34yBuF5tkeoYnzbN1YwuBwKh1T-Y77YOYcWlu-GLY,7883
|
147
147
|
edsl/results/ResultsExportMixin.py,sha256=KQ1GE2JDzrnl4XkyAGnCdgiFtF_mZrhFNDfkNPg_8C8,20501
|
148
148
|
edsl/results/ResultsFetchMixin.py,sha256=VEa0TKDcXbnTinSKs9YaE4WjOSLmlp9Po1_9kklFvSo,848
|
@@ -156,11 +156,11 @@ edsl/scenarios/ScenarioList.py,sha256=0yH58tbcKJxflsQVcOwh98uU_pzW3w3AGQdKHzftdZ
|
|
156
156
|
edsl/scenarios/ScenarioListPdfMixin.py,sha256=0xV033SMygr_ObamXwjbzfxEQ0zFEwAJ1w7Wq1ejjUY,3719
|
157
157
|
edsl/scenarios/__init__.py,sha256=a2CIYQWh9bLeYY4qBJBz7ui7RfxpVd0WlYDf8TaT2D0,45
|
158
158
|
edsl/shared.py,sha256=lgLa-mCk2flIhxXarXLtfXZjXG_6XHhC2A3O8yRTjXc,20
|
159
|
-
edsl/study/ObjectEntry.py,sha256=
|
160
|
-
edsl/study/ProofOfWork.py,sha256=
|
161
|
-
edsl/study/SnapShot.py,sha256
|
162
|
-
edsl/study/Study.py,sha256=
|
163
|
-
edsl/study/__init__.py,sha256=
|
159
|
+
edsl/study/ObjectEntry.py,sha256=e3xRPH8wCN8Pum5HZsQRYgnSoauSvjXunIEH79wu5A8,5788
|
160
|
+
edsl/study/ProofOfWork.py,sha256=FaqYtLgeiTEQXWKukPgPUTWMcIN5t1FR7h7Re8QEtgc,3433
|
161
|
+
edsl/study/SnapShot.py,sha256=-5zoP4uTvnqtu3zRNMD-fKsNAVYX9psoKRADfotsF9E,2439
|
162
|
+
edsl/study/Study.py,sha256=vbivUuESbK4_myMsLdW02hK9BmFXTMrdg-bUyAy1V8I,17080
|
163
|
+
edsl/study/__init__.py,sha256=YAvPLTPG3hK_eN9Ar3d1_d-E3laXpSya879A25-JAxU,170
|
164
164
|
edsl/surveys/DAG.py,sha256=ozQuHo9ZQ8Eet5nDXtp7rFpiSocvvfxIHtyTnztvodg,2380
|
165
165
|
edsl/surveys/Memory.py,sha256=-ikOtkkQldGB_BkPCW3o7AYwV5B_pIwlREw7aVCSHaQ,1113
|
166
166
|
edsl/surveys/MemoryPlan.py,sha256=k65OP2oozG_d99OpkBqXXWH5iXxS-ois3hTf8_1iuj8,7786
|
@@ -193,8 +193,8 @@ edsl/utilities/interface.py,sha256=U8iScZb4jB1npPwbndpjCove59ow2cbAST4fl-46FdI,1
|
|
193
193
|
edsl/utilities/repair_functions.py,sha256=tftmklAqam6LOQQu_-9U44N-llycffhW8LfO63vBmNw,929
|
194
194
|
edsl/utilities/restricted_python.py,sha256=5-_zUhrNbos7pLhDl9nr8d24auRlquR6w-vKkmNjPiA,2060
|
195
195
|
edsl/utilities/utilities.py,sha256=7LOMa1ahhi2t3SRwEs3VjroAj0A-5Q-Cn83v0HESADQ,10113
|
196
|
-
edsl-0.1.29.
|
197
|
-
edsl-0.1.29.
|
198
|
-
edsl-0.1.29.
|
199
|
-
edsl-0.1.29.
|
200
|
-
edsl-0.1.29.
|
196
|
+
edsl-0.1.29.dev3.dist-info/LICENSE,sha256=_qszBDs8KHShVYcYzdMz3HNMtH-fKN_p5zjoVAVumFc,1111
|
197
|
+
edsl-0.1.29.dev3.dist-info/METADATA,sha256=SHjFA4V7BUbdt63W-l60YPIyaQlKX0Y6Y_BAj8ODvjM,4102
|
198
|
+
edsl-0.1.29.dev3.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
199
|
+
edsl-0.1.29.dev3.dist-info/entry_points.txt,sha256=yqJs04hJLRusoLzIYXGv8tl4TH__0D5SDRwLKV9IJCg,56
|
200
|
+
edsl-0.1.29.dev3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|