edsl 0.1.36.dev2__py3-none-any.whl → 0.1.36.dev5__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.
@@ -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=False):
11
+ def __init__(self, interviews: List["Interview"], include_traceback: bool = False):
12
12
  """
13
13
  The structure of a TaskHistory exception
14
14
 
@@ -25,6 +25,7 @@ class TaskHistory:
25
25
 
26
26
  @classmethod
27
27
  def example(cls):
28
+ """ """
28
29
  from edsl.jobs.interviews.Interview import Interview
29
30
 
30
31
  from edsl.jobs.Jobs import Jobs
@@ -38,6 +39,7 @@ class TaskHistory:
38
39
  skip_retry=True,
39
40
  cache=False,
40
41
  raise_validation_errors=True,
42
+ disable_remote_inference=True,
41
43
  )
42
44
 
43
45
  return cls(results.task_history.total_interviews)
@@ -72,14 +74,29 @@ class TaskHistory:
72
74
 
73
75
  def to_dict(self):
74
76
  """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
+ # }
75
84
  return {
76
- "exceptions": [
77
- e.to_dict(include_traceback=self.include_traceback)
78
- for e in self.exceptions
79
- ],
80
- "indices": self.indices,
85
+ "interviews": [i._to_dict() for i in self.total_interviews],
86
+ "include_traceback": self.include_traceback,
81
87
  }
82
88
 
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
+
83
100
  @property
84
101
  def has_exceptions(self) -> bool:
85
102
  """Return True if there are any exceptions.
@@ -259,7 +276,6 @@ class TaskHistory:
259
276
  question_type = interview.survey.get_question(
260
277
  question_name
261
278
  ).question_type
262
- # breakpoint()
263
279
  if (question_name, question_type) not in exceptions_by_question_name:
264
280
  exceptions_by_question_name[(question_name, question_type)] = 0
265
281
  exceptions_by_question_name[(question_name, question_type)] += len(
@@ -50,6 +50,7 @@ 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,
53
54
  ):
54
55
  super().__init__()
55
56
  if func:
@@ -61,9 +62,12 @@ class QuestionFunctional(QuestionBase):
61
62
 
62
63
  self.requires_loop = requires_loop
63
64
 
64
- self.func = create_restricted_function(
65
- self.function_name, self.function_source_code
66
- )
65
+ if unsafe:
66
+ self.func = func
67
+ else:
68
+ self.func = create_restricted_function(
69
+ self.function_name, self.function_source_code
70
+ )
67
71
 
68
72
  self.question_name = question_name
69
73
  self.question_text = question_text
edsl/results/Dataset.py CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
  import random
5
+ import json
5
6
  from collections import UserList
6
7
  from typing import Any, Union, Optional
7
8
 
@@ -110,6 +111,17 @@ class Dataset(UserList, ResultsExportMixin):
110
111
  new_data.append(observation)
111
112
  return Dataset(new_data)
112
113
 
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
+
113
125
  def _repr_html_(self) -> str:
114
126
  """Return an HTML representation of the dataset."""
115
127
  from edsl.utilities.utilities import data_to_html
edsl/results/Result.py CHANGED
@@ -75,6 +75,7 @@ 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,
78
79
  ):
79
80
  """Initialize a Result object.
80
81
 
@@ -130,6 +131,7 @@ class Result(Base, UserDict):
130
131
  self.question_to_attributes = question_to_attributes
131
132
  self.generated_tokens = generated_tokens
132
133
  self.comments_dict = comments_dict or {}
134
+ self.cache_used_dict = cache_used_dict or {}
133
135
 
134
136
  self._combined_dict = None
135
137
  self._problem_keys = None
@@ -153,15 +155,15 @@ class Result(Base, UserDict):
153
155
  if key in self.question_to_attributes:
154
156
  # You might be tempted to just use the naked key
155
157
  # but this is a bad idea because it pollutes the namespace
156
- question_text_dict[
157
- key + "_question_text"
158
- ] = self.question_to_attributes[key]["question_text"]
159
- question_options_dict[
160
- key + "_question_options"
161
- ] = self.question_to_attributes[key]["question_options"]
162
- question_type_dict[
163
- key + "_question_type"
164
- ] = self.question_to_attributes[key]["question_type"]
158
+ question_text_dict[key + "_question_text"] = (
159
+ self.question_to_attributes[key]["question_text"]
160
+ )
161
+ question_options_dict[key + "_question_options"] = (
162
+ self.question_to_attributes[key]["question_options"]
163
+ )
164
+ question_type_dict[key + "_question_type"] = (
165
+ self.question_to_attributes[key]["question_type"]
166
+ )
165
167
 
166
168
  return {
167
169
  "agent": self.agent.traits
edsl/results/Results.py CHANGED
@@ -29,6 +29,7 @@ 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
+
32
33
  from edsl.Base import Base
33
34
 
34
35
 
@@ -89,6 +90,7 @@ class Results(UserList, Mixins, Base):
89
90
  cache: Optional["Cache"] = None,
90
91
  job_uuid: Optional[str] = None,
91
92
  total_results: Optional[int] = None,
93
+ task_history: Optional["TaskHistory"] = None,
92
94
  ):
93
95
  """Instantiate a `Results` object with a survey and a list of `Result` objects.
94
96
 
@@ -100,6 +102,7 @@ class Results(UserList, Mixins, Base):
100
102
  """
101
103
  super().__init__(data)
102
104
  from edsl.data.Cache import Cache
105
+ from edsl.jobs.tasks.TaskHistory import TaskHistory
103
106
 
104
107
  self.survey = survey
105
108
  self.created_columns = created_columns or []
@@ -107,6 +110,8 @@ class Results(UserList, Mixins, Base):
107
110
  self._total_results = total_results
108
111
  self.cache = cache or Cache()
109
112
 
113
+ self.task_history = task_history or TaskHistory(interviews = [])
114
+
110
115
  if hasattr(self, "_add_output_functions"):
111
116
  self._add_output_functions()
112
117
 
@@ -276,6 +281,7 @@ class Results(UserList, Mixins, Base):
276
281
  "survey": self.survey.to_dict(),
277
282
  "created_columns": self.created_columns,
278
283
  "cache": Cache() if not hasattr(self, "cache") else self.cache.to_dict(),
284
+ "task_history": self.task_history.to_dict(),
279
285
  }
280
286
 
281
287
  def compare(self, other_results):
@@ -295,6 +301,10 @@ class Results(UserList, Mixins, Base):
295
301
  "b_not_a": [other_results[i] for i in indices_other],
296
302
  }
297
303
 
304
+ @property
305
+ def has_unfixed_exceptions(self):
306
+ return self.task_history.has_unfixed_exceptions
307
+
298
308
  @add_edsl_version
299
309
  def to_dict(self) -> dict[str, Any]:
300
310
  """Convert the Results object to a dictionary.
@@ -305,7 +315,7 @@ class Results(UserList, Mixins, Base):
305
315
 
306
316
  >>> r = Results.example()
307
317
  >>> r.to_dict().keys()
308
- dict_keys(['data', 'survey', 'created_columns', 'cache', 'edsl_version', 'edsl_class_name'])
318
+ dict_keys(['data', 'survey', 'created_columns', 'cache', 'task_history', 'edsl_version', 'edsl_class_name'])
309
319
  """
310
320
  return self._to_dict()
311
321
 
@@ -358,6 +368,7 @@ class Results(UserList, Mixins, Base):
358
368
  """
359
369
  from edsl import Survey, Cache
360
370
  from edsl.results.Result import Result
371
+ from edsl.jobs.tasks.TaskHistory import TaskHistory
361
372
 
362
373
  try:
363
374
  results = cls(
@@ -367,6 +378,7 @@ class Results(UserList, Mixins, Base):
367
378
  cache=(
368
379
  Cache.from_dict(data.get("cache")) if "cache" in data else Cache()
369
380
  ),
381
+ task_history=TaskHistory.from_dict(data.get("task_history")),
370
382
  )
371
383
  except Exception as e:
372
384
  raise ResultsDeserializationError(f"Error in Results.from_dict: {e}")
@@ -134,7 +134,13 @@ class Scenario(Base, UserDict, ScenarioHtmlMixin):
134
134
  >>> s.to_dict()
135
135
  {'food': 'wood chips', 'edsl_version': '...', 'edsl_class_name': 'Scenario'}
136
136
  """
137
- return self.data.copy()
137
+ from edsl.scenarios.FileStore import FileStore
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
138
144
 
139
145
  @add_edsl_version
140
146
  def to_dict(self) -> dict:
@@ -439,6 +445,11 @@ class Scenario(Base, UserDict, ScenarioHtmlMixin):
439
445
  >>> Scenario.from_dict({"food": "wood chips"})
440
446
  Scenario({'food': 'wood chips'})
441
447
  """
448
+ from edsl.scenarios.FileStore import FileStore
449
+
450
+ for key, value in d.items():
451
+ if isinstance(value, FileStore):
452
+ d[key] = FileStore.from_dict(value)
442
453
  return cls(d)
443
454
 
444
455
  def _table(self) -> tuple[dict, list]:
edsl/surveys/Survey.py CHANGED
@@ -1212,6 +1212,9 @@ class Survey(SurveyExportMixin, SurveyFlowVisualizationMixin, Base):
1212
1212
 
1213
1213
  return Jobs(survey=self)
1214
1214
 
1215
+ def show_prompts(self):
1216
+ return self.to_jobs().show_prompts()
1217
+
1215
1218
  # endregion
1216
1219
 
1217
1220
  # region: Running the survey
@@ -5,9 +5,12 @@ from edsl.utilities.decorators import add_edsl_version, remove_edsl_version
5
5
 
6
6
 
7
7
  class Instruction:
8
- def __init__(self, name, text):
8
+ def __init__(
9
+ self, name, text, preamble="You were given the following instructions:"
10
+ ):
9
11
  self.name = name
10
12
  self.text = text
13
+ self.preamble = preamble
11
14
 
12
15
  def __str__(self):
13
16
  return self.text
@@ -16,7 +19,17 @@ class Instruction:
16
19
  return """Instruction(name="{}", text="{}")""".format(self.name, self.text)
17
20
 
18
21
  def _to_dict(self):
19
- return {"name": self.name, "text": self.text, "edsl_class_name": "Instruction"}
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])
20
33
 
21
34
  @add_edsl_version
22
35
  def to_dict(self):
@@ -31,4 +44,8 @@ class Instruction:
31
44
  @classmethod
32
45
  @remove_edsl_version
33
46
  def from_dict(cls, data):
34
- return cls(data["name"], data["text"])
47
+ return cls(
48
+ data["name"],
49
+ data["text"],
50
+ data.get("preamble", "You were given the following instructions:"),
51
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: edsl
3
- Version: 0.1.36.dev2
3
+ Version: 0.1.36.dev5
4
4
  Summary: Create and analyze LLM-based surveys
5
5
  Home-page: https://www.expectedparrot.com/
6
6
  License: MIT
@@ -1,13 +1,13 @@
1
- edsl/Base.py,sha256=wdFpHWlQlGNL4XfOmYA0AK9YupMDxK3G7mDHCQp60o4,9295
1
+ edsl/Base.py,sha256=xm_WdwWrQRO0Iy88XsOSRm00ZNHv5pX4LbFid8oilX8,9433
2
2
  edsl/BaseDiff.py,sha256=RoVEh52UJs22yMa7k7jv8se01G62jJNWnBzaZngo-Ug,8260
3
3
  edsl/TemplateLoader.py,sha256=sDBlSMt7EfOduM7w3h6v03gvh_Rzn9hVrlS-iLSQdZA,849
4
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
5
+ edsl/__version__.py,sha256=OUsdNphi6Hzv2R7NPqxR63whXY7Kc2QpHH8hilzKlpo,28
6
+ edsl/agents/Agent.py,sha256=HErVSlcHmfhq_OHI2nsRKOMhnn4t7VBcBfU7RipwOmE,29458
7
7
  edsl/agents/AgentList.py,sha256=qo8VK3Ov0YOSbsBcHmlwLZBH81CcDfy5IEcx9AVH78M,10963
8
8
  edsl/agents/Invigilator.py,sha256=m4T-z4aNCGd4LKjLXVNI2VszYW-pQeScfcFAxkb0pWc,9080
9
9
  edsl/agents/InvigilatorBase.py,sha256=qIdAiriXAbnJH_SN9w2UAXHcDgQvk8Ar3QerKFjtPwM,10341
10
- edsl/agents/PromptConstructor.py,sha256=1k_Xni5T_ZB5_3hGFLzYiD1fPK4911IIatVHz9qD1s8,13006
10
+ edsl/agents/PromptConstructor.py,sha256=KM9S2tjvzp9NXi_rAg0iuxSVHu4sPnjrIOWlRNJkuFc,13030
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
@@ -44,13 +44,14 @@ edsl/conversation/Conversation.py,sha256=NdWH62XpcF6hoaG0ScMho_c3TO7PfBnbdlppUN-
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=7q8r1FqE9ap1CMi6WiE_pZQhYxEqG9_tgPgGxLQYVX8,1894
47
+ edsl/coop/PriceFetcher.py,sha256=pCCWBqFnSv8iYpgQKhAzVCdan1xTCNesZgmIB34N4HY,1770
48
48
  edsl/coop/__init__.py,sha256=4iZCwJSzJVyjBYk8ggGxY2kZjq9dXVT1jhyPDNyew4I,115
49
- edsl/coop/coop.py,sha256=_wdT6Z-fFYGtAWLn1e98Vv8hgwhdJM2vH_2G-J2ugiI,28547
49
+ edsl/coop/coop.py,sha256=TwtJY4uYOnSbWXPNZ-o3MFZigswBJnqmIyGFeoQSHws,29846
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=V3Eznr1bCtSs0gnjdc_emmHND7l3fiK9samyPAVb6bo,3528
54
55
  edsl/data/SQLiteDict.py,sha256=V5Nfnxctgh4Iblqcw1KmbnkjtfmWrrombROSQ3mvg6A,8979
55
56
  edsl/data/__init__.py,sha256=KBNGGEuGHq--D-TlpAQmvv_If906dJc1Gsy028zOx78,170
56
57
  edsl/data/orm.py,sha256=Jz6rvw5SrlxwysTL0QI9r68EflKxeEBmf6j6himHDS8,238
@@ -59,7 +60,7 @@ edsl/enums.py,sha256=Z6nhaP8p3z0UJSfsCGb6VQUtGUKw3AK6yC0UDwOi05c,5247
59
60
  edsl/exceptions/__init__.py,sha256=HVg-U-rJ0fRoG9Rws6gnK5S9B68SkPWDPsoD6KpMZ-A,1370
60
61
  edsl/exceptions/agents.py,sha256=3SORFwFbMGrF6-vAL2GrKEVdPcXo7md_k2oYufnVXHA,673
61
62
  edsl/exceptions/configuration.py,sha256=qH2sInNTndKlCLAaNgaXHyRFdKQHL7-dElB_j8wz9g4,351
62
- edsl/exceptions/coop.py,sha256=xDr7k_Tir6L5AxO6GMmoFyUjZ3DIenPQflpUkaTqJl0,38
63
+ edsl/exceptions/coop.py,sha256=xunPPrnbcNHn60wnH-Qw0rC_Ey99X_N7HnOBF8BQg7E,138
63
64
  edsl/exceptions/data.py,sha256=K24CjgwFiMWxrF1Z2dF6F7Vfrge_y9kMK_wsYYSaroU,209
64
65
  edsl/exceptions/general.py,sha256=zAyJnppPjjxQAn6X3A5fetmv5FUR7kQDU58vwBKvAks,1114
65
66
  edsl/exceptions/jobs.py,sha256=sSUATmzBIN1oINWuwPExxPqIWmfCo0XYj_yR4dJzVjo,803
@@ -74,7 +75,7 @@ edsl/inference_services/AzureAI.py,sha256=Xd3r4Y5OQReW-hG67ymK3LSDLiHj5hMFuvGEz5
74
75
  edsl/inference_services/DeepInfraService.py,sha256=fWlH5sCNxf8eHPHxPPxJMEVWpCM9sDenkC8IZYqtXfA,515
75
76
  edsl/inference_services/GoogleService.py,sha256=CeyQ2Db_cCFOIVvetSwsFLqenJFrg4EGoRYwIe7-7-U,5422
76
77
  edsl/inference_services/GroqService.py,sha256=eDMq8d7YAlJ2689ywaoaPGvMgFfOiX1KYlF_vr97N6I,510
77
- edsl/inference_services/InferenceServiceABC.py,sha256=rXqorwbKqzlwui2cxum8_TRrBcfOkgB9s0xULHYGQ1Y,3709
78
+ edsl/inference_services/InferenceServiceABC.py,sha256=Js_XFM4678C0NrTXbmSKLyIsiNzye55gOoz2-FyiC7E,4694
78
79
  edsl/inference_services/InferenceServicesCollection.py,sha256=EDyxnoSjGXhWob_ost7U8WUYjn1jgL_noB0-VlXBnOo,2810
79
80
  edsl/inference_services/MistralAIService.py,sha256=7mUsBEZdEWIjfh4qMNemTT2xYMq7k0yuMLGtDTdfp4Y,3878
80
81
  edsl/inference_services/OllamaService.py,sha256=oro9CRl8IUE2Ro-zE69Cr4Zaf6Gdw29XW5CFU-46E0k,498
@@ -87,26 +88,26 @@ edsl/inference_services/rate_limits_cache.py,sha256=HYslviz7mxF9U4CUTPAkoyBsiXjS
87
88
  edsl/inference_services/registry.py,sha256=Fn6va65MqD9lnFvT603ZnU7Ok8IW64M2MzOH57kf9-A,1240
88
89
  edsl/inference_services/write_available.py,sha256=NNwhATlaMp8IYY635MSx-oYxt5X15acjAfaqYCo_I1Y,285
89
90
  edsl/jobs/Answers.py,sha256=c4LpigQjdnMr7iJu8571C4FggGPVudfT7hbJgmgKW40,1821
90
- edsl/jobs/Jobs.py,sha256=t37-_8PemRGfQABTyuXPYW53-4sevPWkvF6qeq8oLxc,40183
91
+ edsl/jobs/Jobs.py,sha256=_MrbSg-gWWASEEpPtiZcfTX-D8rN3NMg9V0vVZXLFeg,40176
91
92
  edsl/jobs/__init__.py,sha256=aKuAyd_GoalGj-k7djOoVwEbFUE2XLPlikXaA1_8yAg,32
92
93
  edsl/jobs/buckets/BucketCollection.py,sha256=11CRisE1WAPcAlI3YJK3DVvu0AqSvv8KskXo4Q1waSk,2286
93
94
  edsl/jobs/buckets/ModelBuckets.py,sha256=hxw_tzc0V42CiB7mh5jIxlgwDVJ-zFZhlLtKrHEg8ho,2419
94
95
  edsl/jobs/buckets/TokenBucket.py,sha256=7fG4omzTcj5xC2iJLO9bfBkdAGs6Y3weXzlA3BgPr0E,9090
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
96
+ edsl/jobs/interviews/Interview.py,sha256=nsDxbMF0iOEYpgXcmzKVwAtkvarvsWeSsr1rhUTaIak,25755
97
+ edsl/jobs/interviews/InterviewExceptionCollection.py,sha256=HRhxuwR_CQXs22yKm1PCpbv3pgh5t0UTBRbdFhODRM0,3670
98
+ edsl/jobs/interviews/InterviewExceptionEntry.py,sha256=vqtVnT35wUVMwc8YfVhoOgyCKCjpiBdyPHPd-PWpZJY,5589
98
99
  edsl/jobs/interviews/InterviewStatistic.py,sha256=hY5d2EkIJ96NilPpZAvZZzZoxLXM7ss3xx5MIcKtTPs,1856
99
100
  edsl/jobs/interviews/InterviewStatisticsCollection.py,sha256=_ZZ0fnZBQiIywP9Q_wWjpWhlfcPe2cn32GKut10t5RI,788
100
101
  edsl/jobs/interviews/InterviewStatusDictionary.py,sha256=MSyys4hOWe1d8gfsUvAPbcKrs8YiPnz8jpufBSJL7SU,2485
101
102
  edsl/jobs/interviews/InterviewStatusLog.py,sha256=6u0F8gf5tha39VQL-IK_QPkCsQAYVOx_IesX7TDDX_A,3252
102
103
  edsl/jobs/interviews/ReportErrors.py,sha256=RSzDU2rWwtjfztj7sqaMab0quCiY-X2bG3AEOxhTim8,1745
103
104
  edsl/jobs/interviews/interview_status_enum.py,sha256=KJ-1yLAHdX-p8TiFnM0M3v1tnBwkq4aMCuBX6-ytrI8,229
104
- edsl/jobs/runners/JobsRunnerAsyncio.py,sha256=SXWFTgTYQzqIaBjPQ2mRrxR3aGFMQyw2eD9wX8tZNkQ,12850
105
+ edsl/jobs/runners/JobsRunnerAsyncio.py,sha256=6i9X8zDfl0cXWtVAZDzph0Ei-RIUHOsqsq3mtQNQ6D8,12744
105
106
  edsl/jobs/runners/JobsRunnerStatus.py,sha256=4eCh9sRpswGdKeSMW9pCGCAjJZa-OrWUPI7tsxIy_g4,12112
106
107
  edsl/jobs/runners/JobsRunnerStatusData.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
108
  edsl/jobs/tasks/QuestionTaskCreator.py,sha256=K-xATHIXMWPTMOnms5UDW30eTIlIfebf7oOEfwrh1ME,10072
108
109
  edsl/jobs/tasks/TaskCreators.py,sha256=XqAbNU33378Z4PQncokbfJwnKt3KHR9aqa5fKYRDpfg,2694
109
- edsl/jobs/tasks/TaskHistory.py,sha256=xRSo22ipyUSJ15w_k2Jc3dZ04VLwft8zfvm3smAIYrA,14227
110
+ edsl/jobs/tasks/TaskHistory.py,sha256=k2uspUTjzBiFSH5I5in-IGFR4sTsI593sLlca63uFn8,14832
110
111
  edsl/jobs/tasks/TaskStatusLog.py,sha256=bqH36a32F12fjX-M-4lNOhHaK2-WLFzKE-r0PxZPRjI,546
111
112
  edsl/jobs/tasks/task_status_enum.py,sha256=DOyrz61YlIS8R1W7izJNphcLrJ7I_ReUlfdRmk23h0Q,5333
112
113
  edsl/jobs/tokens/InterviewTokenUsage.py,sha256=u_6-IHpGFwZ6qMEXr24-jyLVUSSp4dSs_4iAZsBv7O4,1100
@@ -133,7 +134,7 @@ edsl/questions/QuestionBudget.py,sha256=TJgPsyqafJdJw5if0zVxh7zHloourINUqUWfWIlR
133
134
  edsl/questions/QuestionCheckBox.py,sha256=wC_doEdNZi4y8Uz-tXZyQ2GYS5wQKOWhbVUnyVLoACU,12840
134
135
  edsl/questions/QuestionExtract.py,sha256=PlXwMeZgPAFBXIHSXpFMYTToag-HwA9C7u6-Z3bQMek,6103
135
136
  edsl/questions/QuestionFreeText.py,sha256=uXJxrrAGCq0-J6WpO6TBNFBNOC2ztoEVa-2UMXuwlak,3384
136
- edsl/questions/QuestionFunctional.py,sha256=yZQFLQAxfNsAIETffFoBr-Ltb2oFPeywu-nhm9qjYRc,5133
137
+ edsl/questions/QuestionFunctional.py,sha256=772tduB8zFs5xlssKBay__4_SilfiDkoe-IvK0s2ftU,5247
137
138
  edsl/questions/QuestionList.py,sha256=vs2AE8OnbwVsly-sorb9dfIibdF1BpOaCRYyvwXYSzY,7209
138
139
  edsl/questions/QuestionMultipleChoice.py,sha256=Yj94-6fwFqDI9UvjwSCOfKnp4gBB86XMmCsL7lbX-t4,10292
139
140
  edsl/questions/QuestionNumerical.py,sha256=_jMZ28DZHYAv_g3Y3vCnmzerMs995on0Ng6j4pDcfHo,4959
@@ -199,11 +200,11 @@ edsl/questions/templates/top_k/question_presentation.jinja,sha256=2u8XIkFPWzOuhb
199
200
  edsl/questions/templates/yes_no/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
200
201
  edsl/questions/templates/yes_no/answering_instructions.jinja,sha256=UAcssfcYeW8zytmPOVJOVQEdwdvlRspE8WnatYvreJQ,172
201
202
  edsl/questions/templates/yes_no/question_presentation.jinja,sha256=hoEVj4GQD3EYnR2AStXkMFOJeqISNoEVzBd8-cx2yWg,273
202
- edsl/results/Dataset.py,sha256=XeCWNcni1rde9iVzmC1WTIne2cip4-f2gQL5iaJfXNw,9202
203
+ edsl/results/Dataset.py,sha256=udJvOr9ePfD5xfy5k2zaNNWr4Qg_yp5s_f1YKEcVtKc,9547
203
204
  edsl/results/DatasetExportMixin.py,sha256=-YR-UeuIW_8u0a8HnQ9R6V41DxCq22_AlsD48fXv0sw,25890
204
205
  edsl/results/DatasetTree.py,sha256=nwEgnWBqRXUxagSCEgqwikmIo8ztUxaF-QH-m-8myyQ,4985
205
- edsl/results/Result.py,sha256=o3Tg07loDcwNTb6wPgV_qS7_REkwcMVouc9t_-zwkpw,15469
206
- edsl/results/Results.py,sha256=zp4yDt-rPqgEPpv2xCGppQIzzwiKX-BbUpnJtY739L4,40807
206
+ edsl/results/Result.py,sha256=85TlWtcNwCc98N-w3JF0APIkq5LmHfB8cXyW1T5s3f8,15576
207
+ edsl/results/Results.py,sha256=XdPN_RCpYaQ00SWUdzuxFvReVv8__q-oq87-3Du_szY,41317
207
208
  edsl/results/ResultsDBMixin.py,sha256=Hc08aOiArBf9jbxI5uV4VL4wT6BLOkaaEgTMb3zyTUI,7922
208
209
  edsl/results/ResultsExportMixin.py,sha256=XizBsPNxziyffirMA4kS7UHpYM1WIE4s1K-B7TqTfDw,1266
209
210
  edsl/results/ResultsFetchMixin.py,sha256=VEa0TKDcXbnTinSKs9YaE4WjOSLmlp9Po1_9kklFvSo,848
@@ -213,7 +214,7 @@ edsl/results/Selector.py,sha256=4AsFD71FKTFY1a0_AImsYWcYKx-RXPG6RgwsAvuNW3k,4403
213
214
  edsl/results/__init__.py,sha256=2YcyiVtXi-3vIV0ZzOy1PqBLm2gaziufJVi4fdNrAt8,80
214
215
  edsl/results/tree_explore.py,sha256=hQjiO4E71rIOPDgEHgK8T8ukxqoNdgX_tvyiDlG4_9U,4624
215
216
  edsl/scenarios/FileStore.py,sha256=V_zn2RmVclcBQTvqghotnTO97YHWUXqeVfN7eMfpfUM,13929
216
- edsl/scenarios/Scenario.py,sha256=ZG1x4_MmWP9j0gakLwsxOZ7ESMy3ifwBMhgQlHvsYo8,16809
217
+ edsl/scenarios/Scenario.py,sha256=q5LjsGFRNAH1RG2DtE9fhVl5q_uv929wrOnml7MYBfE,17192
217
218
  edsl/scenarios/ScenarioHtmlMixin.py,sha256=EmugmbPJYW5eZS30rM6pDMDQD9yrrvHjmgZWB1qBfq4,1882
218
219
  edsl/scenarios/ScenarioList.py,sha256=1zbwDICXbvtUGA5bDlhThNp9pfhBGIHIqhK2cX-th50,40942
219
220
  edsl/scenarios/ScenarioListExportMixin.py,sha256=wfffY9xy_1QyIM-1xnisr64izSLjmyuotUYY5iDLodc,1681
@@ -230,7 +231,7 @@ edsl/surveys/Memory.py,sha256=-ikOtkkQldGB_BkPCW3o7AYwV5B_pIwlREw7aVCSHaQ,1113
230
231
  edsl/surveys/MemoryPlan.py,sha256=VESoPM0C_4LUngkskE51rOca_4vbXC2yjfwrBXtHfHA,9029
231
232
  edsl/surveys/Rule.py,sha256=RlERae5n5jFTnEp597UF50YGXtywECU1nulYdsSlfh0,12223
232
233
  edsl/surveys/RuleCollection.py,sha256=VBx9-OuBBFIJlRYfpbWIjMVFSA5iMwTzdx5yl8giQA8,14871
233
- edsl/surveys/Survey.py,sha256=EYXkA0CzgpTIlwnVG21NQgBUo-vMRZhXrkP2sbT5hq4,72125
234
+ edsl/surveys/Survey.py,sha256=aLdUpsVeIVMoCRoN1j4rUhg0yQOSfSGS5Zc_lLFVpoU,72199
234
235
  edsl/surveys/SurveyCSS.py,sha256=NjJezs2sTlgFprN6IukjGKwNYmNdXnLjzV2w5K4z4RI,8415
235
236
  edsl/surveys/SurveyExportMixin.py,sha256=Kvkd2ku2Kemsn2Nw-Yt8GTnGFcUqfEiKznmisAeO7ck,8339
236
237
  edsl/surveys/SurveyFlowVisualizationMixin.py,sha256=dEG_f-L0ZAyWU5Ta584IX5GZurjVt1tbIISo5z61Jvg,4004
@@ -239,7 +240,7 @@ edsl/surveys/__init__.py,sha256=vjMYVlP95fHVqqw2FfKXRuYbTArZkZr1nK4FnXzZWzs,129
239
240
  edsl/surveys/base.py,sha256=XJHGEbbsH6hlYYkmI4isVLD8guLz8BdhR-eQRL78mc4,1115
240
241
  edsl/surveys/descriptors.py,sha256=3B-hBVvGpLlVBCyOnPuxkLjesvpr0QIuATbggp_MJ7o,2076
241
242
  edsl/surveys/instructions/ChangeInstruction.py,sha256=XDLuI5nVI60iJz1w1kLaKmYryAYE0XIyRbElBtNjVVM,1265
242
- edsl/surveys/instructions/Instruction.py,sha256=WaTGihAQ6lCtm5W4vknTamkPzDp-eIAirdtGV37fdbc,925
243
+ edsl/surveys/instructions/Instruction.py,sha256=l_ET6HCMt0ZU1BBHqP4EYKjEjeAS5Eg6NBJsCLO70R8,1352
243
244
  edsl/surveys/instructions/InstructionCollection.py,sha256=eO-i9zgbk8q0D8hnawDrioS-iqXOEE7eKm5cgYNgwrU,2931
244
245
  edsl/surveys/instructions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
245
246
  edsl/templates/error_reporting/base.html,sha256=IkV24ZaUCNX303ZqVTWkFsJOnu5BG_SULrKN2YejUxQ,552
@@ -272,7 +273,7 @@ edsl/utilities/interface.py,sha256=AaKpWiwWBwP2swNXmnFlIf3ZFsjfsR5bjXQAW47tD-8,1
272
273
  edsl/utilities/repair_functions.py,sha256=tftmklAqam6LOQQu_-9U44N-llycffhW8LfO63vBmNw,929
273
274
  edsl/utilities/restricted_python.py,sha256=5-_zUhrNbos7pLhDl9nr8d24auRlquR6w-vKkmNjPiA,2060
274
275
  edsl/utilities/utilities.py,sha256=gqMtWWNEZkWLiRR9vHW-VRNy2bStEPlJ-I2aK9CwFiQ,11367
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,,
276
+ edsl-0.1.36.dev5.dist-info/LICENSE,sha256=_qszBDs8KHShVYcYzdMz3HNMtH-fKN_p5zjoVAVumFc,1111
277
+ edsl-0.1.36.dev5.dist-info/METADATA,sha256=_6ZdTgBp3vpETeL0tVFg9zJdWejj95HLtIwSXPcjQAk,4476
278
+ edsl-0.1.36.dev5.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
279
+ edsl-0.1.36.dev5.dist-info/RECORD,,