edsl 0.1.35__py3-none-any.whl → 0.1.36__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.
Files changed (58) hide show
  1. edsl/Base.py +5 -0
  2. edsl/__init__.py +1 -0
  3. edsl/__version__.py +1 -1
  4. edsl/agents/Agent.py +37 -9
  5. edsl/agents/Invigilator.py +2 -1
  6. edsl/agents/InvigilatorBase.py +5 -1
  7. edsl/agents/PromptConstructor.py +31 -67
  8. edsl/conversation/Conversation.py +1 -1
  9. edsl/coop/PriceFetcher.py +14 -18
  10. edsl/coop/coop.py +42 -8
  11. edsl/data/RemoteCacheSync.py +97 -0
  12. edsl/exceptions/coop.py +8 -0
  13. edsl/inference_services/InferenceServiceABC.py +28 -0
  14. edsl/inference_services/InferenceServicesCollection.py +10 -4
  15. edsl/inference_services/models_available_cache.py +25 -1
  16. edsl/inference_services/registry.py +24 -16
  17. edsl/jobs/Jobs.py +327 -206
  18. edsl/jobs/interviews/Interview.py +65 -10
  19. edsl/jobs/interviews/InterviewExceptionCollection.py +9 -0
  20. edsl/jobs/interviews/InterviewExceptionEntry.py +31 -9
  21. edsl/jobs/runners/JobsRunnerAsyncio.py +8 -13
  22. edsl/jobs/tasks/QuestionTaskCreator.py +1 -5
  23. edsl/jobs/tasks/TaskHistory.py +23 -7
  24. edsl/language_models/LanguageModel.py +3 -0
  25. edsl/prompts/Prompt.py +24 -38
  26. edsl/prompts/__init__.py +1 -1
  27. edsl/questions/QuestionBasePromptsMixin.py +18 -18
  28. edsl/questions/QuestionFunctional.py +7 -3
  29. edsl/questions/descriptors.py +24 -24
  30. edsl/results/Dataset.py +12 -0
  31. edsl/results/Result.py +2 -0
  32. edsl/results/Results.py +13 -1
  33. edsl/scenarios/FileStore.py +20 -5
  34. edsl/scenarios/Scenario.py +15 -1
  35. edsl/scenarios/__init__.py +2 -0
  36. edsl/surveys/Survey.py +3 -0
  37. edsl/surveys/instructions/Instruction.py +20 -3
  38. {edsl-0.1.35.dist-info → edsl-0.1.36.dist-info}/METADATA +1 -1
  39. {edsl-0.1.35.dist-info → edsl-0.1.36.dist-info}/RECORD +41 -57
  40. edsl/jobs/FailedQuestion.py +0 -78
  41. edsl/jobs/interviews/InterviewStatusMixin.py +0 -33
  42. edsl/jobs/tasks/task_management.py +0 -13
  43. edsl/prompts/QuestionInstructionsBase.py +0 -10
  44. edsl/prompts/library/agent_instructions.py +0 -38
  45. edsl/prompts/library/agent_persona.py +0 -21
  46. edsl/prompts/library/question_budget.py +0 -30
  47. edsl/prompts/library/question_checkbox.py +0 -38
  48. edsl/prompts/library/question_extract.py +0 -23
  49. edsl/prompts/library/question_freetext.py +0 -18
  50. edsl/prompts/library/question_linear_scale.py +0 -24
  51. edsl/prompts/library/question_list.py +0 -26
  52. edsl/prompts/library/question_multiple_choice.py +0 -54
  53. edsl/prompts/library/question_numerical.py +0 -35
  54. edsl/prompts/library/question_rank.py +0 -25
  55. edsl/prompts/prompt_config.py +0 -37
  56. edsl/prompts/registry.py +0 -202
  57. {edsl-0.1.35.dist-info → edsl-0.1.36.dist-info}/LICENSE +0 -0
  58. {edsl-0.1.35.dist-info → edsl-0.1.36.dist-info}/WHEEL +0 -0
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
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}")
@@ -77,8 +77,19 @@ 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
+
80
89
  @property
81
90
  def size(self) -> int:
91
+ if self.base64_string != None:
92
+ return (len(self.base64_string) / 4.0) * 3 # from base64 to char size
82
93
  return os.path.getsize(self.path)
83
94
 
84
95
  def upload_google(self, refresh: bool = False) -> None:
@@ -93,7 +104,7 @@ class FileStore(Scenario):
93
104
  return cls(**d)
94
105
 
95
106
  def __repr__(self):
96
- return f"FileStore({self.path})"
107
+ return f"FileStore(path='{self.path}')"
97
108
 
98
109
  def encode_file_to_base64_string(self, file_path: str):
99
110
  try:
@@ -272,7 +283,8 @@ class CSVFileStore(FileStore):
272
283
 
273
284
  with tempfile.NamedTemporaryFile(suffix=".csv", delete=False) as f:
274
285
  r.to_csv(filename=f.name)
275
- return cls(f.name)
286
+
287
+ return cls(f.name)
276
288
 
277
289
  def view(self):
278
290
  import pandas as pd
@@ -352,7 +364,8 @@ class PDFFileStore(FileStore):
352
364
 
353
365
  with tempfile.NamedTemporaryFile(suffix=".pdf", delete=False) as f:
354
366
  f.write(pdf_string.encode())
355
- return cls(f.name)
367
+
368
+ return cls(f.name)
356
369
 
357
370
 
358
371
  class PNGFileStore(FileStore):
@@ -367,7 +380,8 @@ class PNGFileStore(FileStore):
367
380
 
368
381
  with tempfile.NamedTemporaryFile(suffix=".png", delete=False) as f:
369
382
  f.write(png_string.encode())
370
- return cls(f.name)
383
+
384
+ return cls(f.name)
371
385
 
372
386
  def view(self):
373
387
  import matplotlib.pyplot as plt
@@ -407,7 +421,8 @@ class HTMLFileStore(FileStore):
407
421
 
408
422
  with tempfile.NamedTemporaryFile(suffix=".html", delete=False) as f:
409
423
  f.write("<html><body><h1>Test</h1></body></html>".encode())
410
- return cls(f.name)
424
+
425
+ return cls(f.name)
411
426
 
412
427
  def view(self):
413
428
  import webbrowser
@@ -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,14 @@ 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
+ # 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)
442
456
  return cls(d)
443
457
 
444
458
  def _table(self) -> tuple[dict, list]:
@@ -1,2 +1,4 @@
1
1
  from edsl.scenarios.Scenario import Scenario
2
2
  from edsl.scenarios.ScenarioList import ScenarioList
3
+
4
+ # from edsl.scenarios.FileStore import FileStore
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.35
3
+ Version: 0.1.36
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
- edsl/__init__.py,sha256=UZcx9RHSi3Dslh2lWvCOeppdMW9Xzw_YLs-kFaNW1MU,1770
5
- edsl/__version__.py,sha256=ABqgofsnbWf7823vTBbZNQ81eKQbWwrVToAU6T3z-6s,23
6
- edsl/agents/Agent.py,sha256=ww6DK177eHQUlYkzgnt1b-MBDKXCdhVx3HezAZZ7TKk,28473
4
+ edsl/__init__.py,sha256=5dKXbmvmALx-_7KRNdC66cvP_dpLpsfTDBV57SMgTzY,1817
5
+ edsl/__version__.py,sha256=z6JYG2yALo9HI8zZMbgirtKP92kE14gI-nkfBP7Sf24,23
6
+ edsl/agents/Agent.py,sha256=OJlBBdiHJztpvbyFwIevF2skYZdtvinkP9OccpSH0to,29454
7
7
  edsl/agents/AgentList.py,sha256=qo8VK3Ov0YOSbsBcHmlwLZBH81CcDfy5IEcx9AVH78M,10963
8
- edsl/agents/Invigilator.py,sha256=6xd4sJ6Jzxld8LZDWZuSCZLL_MfaSux4LJCAm_RLEOM,9077
9
- edsl/agents/InvigilatorBase.py,sha256=qIdAiriXAbnJH_SN9w2UAXHcDgQvk8Ar3QerKFjtPwM,10341
10
- edsl/agents/PromptConstructor.py,sha256=qVCfRyYR-vKcpGJ_It2SOUvBfHtF8M6qYcf9ZCsHBl8,14855
8
+ edsl/agents/Invigilator.py,sha256=m4T-z4aNCGd4LKjLXVNI2VszYW-pQeScfcFAxkb0pWc,9080
9
+ edsl/agents/InvigilatorBase.py,sha256=tE0Te6OGp8JSGF-yMkaY6fbKhrWt6ZI2jc8P5S374dQ,10435
10
+ edsl/agents/PromptConstructor.py,sha256=QRpGbTfOPCdLcehR0miDNwDBIKb1mmIyVKUHP8Kgj8s,13605
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,17 +40,18 @@ 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=NdWH62XpcF6hoaG0ScMho_c3TO7PfBnbdlppUN-j07k,7627
43
+ edsl/conversation/Conversation.py,sha256=h_t9JWbMlec2788ojtxi0skYicchrDsy2j6K-mDpHKM,7633
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=is3j644YAZDPCt4bMxOZpXtJkCXLs_hoKukxQosKKXM,3628
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,47 +75,44 @@ 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/InferenceServicesCollection.py,sha256=EDyxnoSjGXhWob_ost7U8WUYjn1jgL_noB0-VlXBnOo,2810
78
+ edsl/inference_services/InferenceServiceABC.py,sha256=Js_XFM4678C0NrTXbmSKLyIsiNzye55gOoz2-FyiC7E,4694
79
+ edsl/inference_services/InferenceServicesCollection.py,sha256=fq6hiBeJal3V_JhnMrKljvmewCL70hNV1jCzmuk5AOI,3016
79
80
  edsl/inference_services/MistralAIService.py,sha256=7mUsBEZdEWIjfh4qMNemTT2xYMq7k0yuMLGtDTdfp4Y,3878
80
81
  edsl/inference_services/OllamaService.py,sha256=oro9CRl8IUE2Ro-zE69Cr4Zaf6Gdw29XW5CFU-46E0k,498
81
82
  edsl/inference_services/OpenAIService.py,sha256=wraTu62bZojmgAXHNG6pJMMPZiyO1pSDfY73LVaBR_I,7621
82
83
  edsl/inference_services/TestService.py,sha256=-jTXkl_qLt1k8gJjRb0SMgTb9EY-XMTP-ZUL9AJcUCA,3009
83
84
  edsl/inference_services/TogetherAIService.py,sha256=p_31ccrfN25kZF2xlAlUkb7w1EL4lGjmkSv-5qZ7TtY,6301
84
85
  edsl/inference_services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
- edsl/inference_services/models_available_cache.py,sha256=HtGNaYgrxY2oPy-QruKhjj6LUzhGNqBhLHFWMoMi1E4,3312
86
+ edsl/inference_services/models_available_cache.py,sha256=bOvevfRn2HlmBcHalaDkjFLxiw0JJhsXVUHZo_OhgjA,4061
86
87
  edsl/inference_services/rate_limits_cache.py,sha256=HYslviz7mxF9U4CUTPAkoyBsiXjSju-YCp4HHir6e34,1398
87
- edsl/inference_services/registry.py,sha256=CwdaQ-A5PTb5lFKMQdOfl8IqCw2SVJ8HlC-_2uZf11k,1141
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/FailedQuestion.py,sha256=3D5Vcmv1t2_dzBWbkUUIia3_jXHdzQDdyg-4TEIWU2Q,2701
91
- edsl/jobs/Jobs.py,sha256=oryxhrBuXs9Ba8mt5BSIjX3gT37hdzothL5xH0ygrkU,37227
91
+ edsl/jobs/Jobs.py,sha256=_MrbSg-gWWASEEpPtiZcfTX-D8rN3NMg9V0vVZXLFeg,40176
92
92
  edsl/jobs/__init__.py,sha256=aKuAyd_GoalGj-k7djOoVwEbFUE2XLPlikXaA1_8yAg,32
93
93
  edsl/jobs/buckets/BucketCollection.py,sha256=11CRisE1WAPcAlI3YJK3DVvu0AqSvv8KskXo4Q1waSk,2286
94
94
  edsl/jobs/buckets/ModelBuckets.py,sha256=hxw_tzc0V42CiB7mh5jIxlgwDVJ-zFZhlLtKrHEg8ho,2419
95
95
  edsl/jobs/buckets/TokenBucket.py,sha256=7fG4omzTcj5xC2iJLO9bfBkdAGs6Y3weXzlA3BgPr0E,9090
96
- edsl/jobs/interviews/Interview.py,sha256=iw0thEGwENOl8uzHRJ88zjYHEDSlM_X96Fyse9wZCwM,23883
97
- edsl/jobs/interviews/InterviewExceptionCollection.py,sha256=Ez8BCZUD3odqoY9h-gzYKKM8yaHynQ-eYw2uMDh7t98,3279
98
- edsl/jobs/interviews/InterviewExceptionEntry.py,sha256=BGGjj0sb1wJJ0QmYklt1DyEYKD8mUGygllGfN2WXKbY,4903
96
+ edsl/jobs/interviews/Interview.py,sha256=hInquPQ0msoQfcNPemXmtIo3SMrECbqICYhno_6m_n0,25987
97
+ edsl/jobs/interviews/InterviewExceptionCollection.py,sha256=ZIe9nnI8pznxp1D0K2Ii9SHorc9-f0k_lQV-Giq41P8,3666
98
+ edsl/jobs/interviews/InterviewExceptionEntry.py,sha256=2eXLeeGYWOhV8dhtJ-oj05yd1PLKU8j2y3ztqo3ZwHo,5727
99
99
  edsl/jobs/interviews/InterviewStatistic.py,sha256=hY5d2EkIJ96NilPpZAvZZzZoxLXM7ss3xx5MIcKtTPs,1856
100
100
  edsl/jobs/interviews/InterviewStatisticsCollection.py,sha256=_ZZ0fnZBQiIywP9Q_wWjpWhlfcPe2cn32GKut10t5RI,788
101
101
  edsl/jobs/interviews/InterviewStatusDictionary.py,sha256=MSyys4hOWe1d8gfsUvAPbcKrs8YiPnz8jpufBSJL7SU,2485
102
102
  edsl/jobs/interviews/InterviewStatusLog.py,sha256=6u0F8gf5tha39VQL-IK_QPkCsQAYVOx_IesX7TDDX_A,3252
103
- edsl/jobs/interviews/InterviewStatusMixin.py,sha256=VV0Pel-crUsLoGpTifeIIkXsLGj0bfuO--UtpRnH-dU,1251
104
103
  edsl/jobs/interviews/ReportErrors.py,sha256=RSzDU2rWwtjfztj7sqaMab0quCiY-X2bG3AEOxhTim8,1745
105
104
  edsl/jobs/interviews/interview_status_enum.py,sha256=KJ-1yLAHdX-p8TiFnM0M3v1tnBwkq4aMCuBX6-ytrI8,229
106
- edsl/jobs/runners/JobsRunnerAsyncio.py,sha256=SXWFTgTYQzqIaBjPQ2mRrxR3aGFMQyw2eD9wX8tZNkQ,12850
105
+ edsl/jobs/runners/JobsRunnerAsyncio.py,sha256=Uo-05NIWqDWp4fdIewirEWSTX1yBwFqBSL1TldyizS4,12739
107
106
  edsl/jobs/runners/JobsRunnerStatus.py,sha256=4eCh9sRpswGdKeSMW9pCGCAjJZa-OrWUPI7tsxIy_g4,12112
108
107
  edsl/jobs/runners/JobsRunnerStatusData.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
- edsl/jobs/tasks/QuestionTaskCreator.py,sha256=f26rokFVXVdyKR2M8of_jlZqP6TPcTAINk9tEvb35pw,10122
108
+ edsl/jobs/tasks/QuestionTaskCreator.py,sha256=K-xATHIXMWPTMOnms5UDW30eTIlIfebf7oOEfwrh1ME,10072
110
109
  edsl/jobs/tasks/TaskCreators.py,sha256=XqAbNU33378Z4PQncokbfJwnKt3KHR9aqa5fKYRDpfg,2694
111
- edsl/jobs/tasks/TaskHistory.py,sha256=xRSo22ipyUSJ15w_k2Jc3dZ04VLwft8zfvm3smAIYrA,14227
110
+ edsl/jobs/tasks/TaskHistory.py,sha256=k2uspUTjzBiFSH5I5in-IGFR4sTsI593sLlca63uFn8,14832
112
111
  edsl/jobs/tasks/TaskStatusLog.py,sha256=bqH36a32F12fjX-M-4lNOhHaK2-WLFzKE-r0PxZPRjI,546
113
- edsl/jobs/tasks/task_management.py,sha256=KMToZuXzMlnHRHUF_VHL0-lHMTGhklf2GHVuwEEHtzA,301
114
112
  edsl/jobs/tasks/task_status_enum.py,sha256=DOyrz61YlIS8R1W7izJNphcLrJ7I_ReUlfdRmk23h0Q,5333
115
113
  edsl/jobs/tokens/InterviewTokenUsage.py,sha256=u_6-IHpGFwZ6qMEXr24-jyLVUSSp4dSs_4iAZsBv7O4,1100
116
114
  edsl/jobs/tokens/TokenUsage.py,sha256=odj2-wDNEbHl9noyFAQ0DSKV0D9cv3aDOpmXufKZ8O4,1323
117
- edsl/language_models/LanguageModel.py,sha256=lGmflHSq0vLt4zBzYSKxH5dFccfA4Mhj4NM-XhTNZxY,25194
115
+ edsl/language_models/LanguageModel.py,sha256=7kXi42P6m8kku-_UxstTapIzI-3N8a3Ks3_IRJEgxpc,25395
118
116
  edsl/language_models/ModelList.py,sha256=GhjRV7y1jRvP_Yjgwv6fxksTVb8sFPBiiRRfdqW-hgg,2852
119
117
  edsl/language_models/RegisterLanguageModelsMeta.py,sha256=eMtBSAnlRnC4c-0_o2QkSNyzv-uAce4BEGMXq2PLj2E,7523
120
118
  edsl/language_models/__init__.py,sha256=bvY7Gy6VkX1gSbNkRbGPS-M1kUnb0EohL0FSagaEaTs,109
@@ -126,31 +124,17 @@ edsl/language_models/unused/ReplicateBase.py,sha256=J1oqf7mEyyKhRwNUomnptVqAsVFY
126
124
  edsl/language_models/utilities.py,sha256=GWON2ahCpB-_-hhqmQ5Yi7_rKB4cd8GlucWuq6EnGZQ,2280
127
125
  edsl/notebooks/Notebook.py,sha256=xi9xkxmkQ6-DwhqbjjMLpYKB0VJV20AtwEonJ6mnqjo,7739
128
126
  edsl/notebooks/__init__.py,sha256=VNUA3nNq04slWNbYaNrzOhQJu3AZANpvBniyCJSzJ7U,45
129
- edsl/prompts/Prompt.py,sha256=KsIz0tZnIqZlnbzNWO57C3MwJ0OCcUrZPmu7DBApc4s,11887
130
- edsl/prompts/QuestionInstructionsBase.py,sha256=xico6ob4cqWsHl-txj2RbY_4Ny5u9UqvIjmoTVgjUhk,348
131
- edsl/prompts/__init__.py,sha256=Z0ywyJfnV0i-sR1SCdK4mHhgECT5cXpHVA-pKuBTifc,85
132
- edsl/prompts/library/agent_instructions.py,sha256=_2kCDYvh3ZOF72VvcIH5jhmHjM6AAgQdkWrHvR52Yhg,1100
133
- edsl/prompts/library/agent_persona.py,sha256=jEl1LjlOP67vOPiRW0S_-TRMz3n6Tp3mPRvltM2r2_k,516
134
- edsl/prompts/library/question_budget.py,sha256=RAc7pmQRbs_-xksU52yYl8iqJ7HejPY4sQOlCSQLGWs,1190
135
- edsl/prompts/library/question_checkbox.py,sha256=NIGcdnfkJ8_XbGsdq9toeWA_phQVx5FIBOAe0mReXJw,1462
136
- edsl/prompts/library/question_extract.py,sha256=QxNiNBjUk25Ss_Pax0iDgmgTYXEycpWJk2z0evmqsP0,775
137
- edsl/prompts/library/question_freetext.py,sha256=_I7hcniRfVwmZr2wXAasfbZ0GTu41ZIKfcoixGhzZUI,510
138
- edsl/prompts/library/question_linear_scale.py,sha256=sQpgjSvqJU-uQti-DCxOzLzj05ENkpyxmH-qTFq39x0,778
139
- edsl/prompts/library/question_list.py,sha256=KYi3gtcWyDzRLyAb2-k7C-QJ9TAfbLGPkWVvVmdT6xg,731
140
- edsl/prompts/library/question_multiple_choice.py,sha256=_2LUM9bOInODoFyaTrKfMkcb5Z7RDj_odq5iAnD7KVQ,1617
141
- edsl/prompts/library/question_numerical.py,sha256=ZdWnDbTU0gQdMMqcWHw_eIHEZkJ_kuE-XWrnCYFR07w,1456
142
- edsl/prompts/library/question_rank.py,sha256=WDgXyph0EKWJrSgsW2eqcx3xdU-WA1LEvB2jvQFOQ8s,882
143
- edsl/prompts/prompt_config.py,sha256=O3Y5EvBsCeKs9m9IjXiRXOcHWlWvQV0yqsNb2oSR1ow,974
144
- edsl/prompts/registry.py,sha256=XOsqGsvNOmIG83jqoszqI72yNZkkszKR4FrEhwSzj_Q,8093
127
+ edsl/prompts/Prompt.py,sha256=qZCFj_cu2Gu23VLe0TQ-HZ42n3DOk1fQyj8Wa_boFms,11382
128
+ edsl/prompts/__init__.py,sha256=wrtkH7JW72U93_pnmTvqQx_NoadH5OPRNfrZ5AaD7Co,87
145
129
  edsl/questions/AnswerValidatorMixin.py,sha256=t_ABep50KP02GSc48Y8VAEjp35drVOngfrWXU5aVhgk,11505
146
130
  edsl/questions/QuestionBase.py,sha256=QsdYFHnWYh04JpCdx3o3WGgohBfE5X_7idQRRYrx_SA,21169
147
131
  edsl/questions/QuestionBaseGenMixin.py,sha256=CPxjWZjrxuSO8YWelz6dbp7fm788gN7-T8z7jXStboQ,6017
148
- edsl/questions/QuestionBasePromptsMixin.py,sha256=Km1P6PpkVJ9O3dS8pJZHNJ6aQABhYGLwdef4Z2vSrqk,9516
132
+ edsl/questions/QuestionBasePromptsMixin.py,sha256=tInTg27KtmyO-hX4ZZdzgPTy4a8LZzbssUC_tAhRsxU,9552
149
133
  edsl/questions/QuestionBudget.py,sha256=TJgPsyqafJdJw5if0zVxh7zHloourINUqUWfWIlRq9Y,8131
150
134
  edsl/questions/QuestionCheckBox.py,sha256=wC_doEdNZi4y8Uz-tXZyQ2GYS5wQKOWhbVUnyVLoACU,12840
151
135
  edsl/questions/QuestionExtract.py,sha256=PlXwMeZgPAFBXIHSXpFMYTToag-HwA9C7u6-Z3bQMek,6103
152
136
  edsl/questions/QuestionFreeText.py,sha256=uXJxrrAGCq0-J6WpO6TBNFBNOC2ztoEVa-2UMXuwlak,3384
153
- edsl/questions/QuestionFunctional.py,sha256=yZQFLQAxfNsAIETffFoBr-Ltb2oFPeywu-nhm9qjYRc,5133
137
+ edsl/questions/QuestionFunctional.py,sha256=772tduB8zFs5xlssKBay__4_SilfiDkoe-IvK0s2ftU,5247
154
138
  edsl/questions/QuestionList.py,sha256=vs2AE8OnbwVsly-sorb9dfIibdF1BpOaCRYyvwXYSzY,7209
155
139
  edsl/questions/QuestionMultipleChoice.py,sha256=Yj94-6fwFqDI9UvjwSCOfKnp4gBB86XMmCsL7lbX-t4,10292
156
140
  edsl/questions/QuestionNumerical.py,sha256=_jMZ28DZHYAv_g3Y3vCnmzerMs995on0Ng6j4pDcfHo,4959
@@ -167,7 +151,7 @@ edsl/questions/derived/QuestionLinearScale.py,sha256=tj_RszK9WumaKRVMS1Fy63-Q6ip
167
151
  edsl/questions/derived/QuestionTopK.py,sha256=HT8NlbT8YBTmVNVPVIP1EyqGsiN3bu4SbFp29CVT0a4,3212
168
152
  edsl/questions/derived/QuestionYesNo.py,sha256=KWJyaXSNPNxELtK0nWvIqNtpAF05MMAC0ILUjxXkVwo,2735
169
153
  edsl/questions/derived/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
170
- edsl/questions/descriptors.py,sha256=10zWqaYeRjlc5jTCHFoa0SLZ-myEfZiO42HFoS5_KbE,16407
154
+ edsl/questions/descriptors.py,sha256=t9AFQPHewgqeC1OZ3I3kP-i2ToXRJUAcJsP7CZIrOgY,16447
171
155
  edsl/questions/prompt_templates/question_budget.jinja,sha256=-ekZYCa_KRc-xLcpf3j-YmXV0WSyIK_laOp2x3li-tA,737
172
156
  edsl/questions/prompt_templates/question_checkbox.jinja,sha256=V-Dn2VJhfXyIILWIhMviTfQ5WuXh1YZerwicaA6Okzc,1136
173
157
  edsl/questions/prompt_templates/question_extract.jinja,sha256=27b8iMJaA2h5UOrHPMiBCapMnJou4vSkZzkZndK2s1U,343
@@ -216,11 +200,11 @@ edsl/questions/templates/top_k/question_presentation.jinja,sha256=2u8XIkFPWzOuhb
216
200
  edsl/questions/templates/yes_no/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
217
201
  edsl/questions/templates/yes_no/answering_instructions.jinja,sha256=UAcssfcYeW8zytmPOVJOVQEdwdvlRspE8WnatYvreJQ,172
218
202
  edsl/questions/templates/yes_no/question_presentation.jinja,sha256=hoEVj4GQD3EYnR2AStXkMFOJeqISNoEVzBd8-cx2yWg,273
219
- edsl/results/Dataset.py,sha256=XeCWNcni1rde9iVzmC1WTIne2cip4-f2gQL5iaJfXNw,9202
203
+ edsl/results/Dataset.py,sha256=udJvOr9ePfD5xfy5k2zaNNWr4Qg_yp5s_f1YKEcVtKc,9547
220
204
  edsl/results/DatasetExportMixin.py,sha256=-YR-UeuIW_8u0a8HnQ9R6V41DxCq22_AlsD48fXv0sw,25890
221
205
  edsl/results/DatasetTree.py,sha256=nwEgnWBqRXUxagSCEgqwikmIo8ztUxaF-QH-m-8myyQ,4985
222
- edsl/results/Result.py,sha256=o3Tg07loDcwNTb6wPgV_qS7_REkwcMVouc9t_-zwkpw,15469
223
- edsl/results/Results.py,sha256=zp4yDt-rPqgEPpv2xCGppQIzzwiKX-BbUpnJtY739L4,40807
206
+ edsl/results/Result.py,sha256=ypLroL1mFiJjx_xrI8LGBh6EwZid7S3Z23r9N8k5z8o,15570
207
+ edsl/results/Results.py,sha256=U5_yAru7ShvKuxLCoWVMilVnpgHUZtoEXYHuko1hQ0w,41314
224
208
  edsl/results/ResultsDBMixin.py,sha256=Hc08aOiArBf9jbxI5uV4VL4wT6BLOkaaEgTMb3zyTUI,7922
225
209
  edsl/results/ResultsExportMixin.py,sha256=XizBsPNxziyffirMA4kS7UHpYM1WIE4s1K-B7TqTfDw,1266
226
210
  edsl/results/ResultsFetchMixin.py,sha256=VEa0TKDcXbnTinSKs9YaE4WjOSLmlp9Po1_9kklFvSo,848
@@ -229,13 +213,13 @@ edsl/results/ResultsToolsMixin.py,sha256=mseEFxJCf9sjXdIxpjITt_UZBwdXxw2o2VLg5jM
229
213
  edsl/results/Selector.py,sha256=4AsFD71FKTFY1a0_AImsYWcYKx-RXPG6RgwsAvuNW3k,4403
230
214
  edsl/results/__init__.py,sha256=2YcyiVtXi-3vIV0ZzOy1PqBLm2gaziufJVi4fdNrAt8,80
231
215
  edsl/results/tree_explore.py,sha256=hQjiO4E71rIOPDgEHgK8T8ukxqoNdgX_tvyiDlG4_9U,4624
232
- edsl/scenarios/FileStore.py,sha256=V_zn2RmVclcBQTvqghotnTO97YHWUXqeVfN7eMfpfUM,13929
233
- edsl/scenarios/Scenario.py,sha256=ZG1x4_MmWP9j0gakLwsxOZ7ESMy3ifwBMhgQlHvsYo8,16809
216
+ edsl/scenarios/FileStore.py,sha256=6XeRxYJmxlAWDiVozlO0hINChgECyPTpMjJskAltFzg,14260
217
+ edsl/scenarios/Scenario.py,sha256=k6md3dcz0iZ50hV1biD4XrN-drpUgrfmFn5i8mLOezs,17418
234
218
  edsl/scenarios/ScenarioHtmlMixin.py,sha256=EmugmbPJYW5eZS30rM6pDMDQD9yrrvHjmgZWB1qBfq4,1882
235
219
  edsl/scenarios/ScenarioList.py,sha256=1zbwDICXbvtUGA5bDlhThNp9pfhBGIHIqhK2cX-th50,40942
236
220
  edsl/scenarios/ScenarioListExportMixin.py,sha256=wfffY9xy_1QyIM-1xnisr64izSLjmyuotUYY5iDLodc,1681
237
221
  edsl/scenarios/ScenarioListPdfMixin.py,sha256=z_H2sZn5SCSq6nRLSU5jefaOlh4sqJLyOY_Ld0XCR18,8332
238
- edsl/scenarios/__init__.py,sha256=KRwZCLf2R0qyJvv1NGbd8M51Bt6Ia6Iylg-Xq_2Fa6M,98
222
+ edsl/scenarios/__init__.py,sha256=1X03GA_ltVRzNT5KQIuATj3qBcpFCvvGWojr3wggGtk,148
239
223
  edsl/shared.py,sha256=lgLa-mCk2flIhxXarXLtfXZjXG_6XHhC2A3O8yRTjXc,20
240
224
  edsl/study/ObjectEntry.py,sha256=e3xRPH8wCN8Pum5HZsQRYgnSoauSvjXunIEH79wu5A8,5788
241
225
  edsl/study/ProofOfWork.py,sha256=FaqYtLgeiTEQXWKukPgPUTWMcIN5t1FR7h7Re8QEtgc,3433
@@ -247,7 +231,7 @@ edsl/surveys/Memory.py,sha256=-ikOtkkQldGB_BkPCW3o7AYwV5B_pIwlREw7aVCSHaQ,1113
247
231
  edsl/surveys/MemoryPlan.py,sha256=VESoPM0C_4LUngkskE51rOca_4vbXC2yjfwrBXtHfHA,9029
248
232
  edsl/surveys/Rule.py,sha256=RlERae5n5jFTnEp597UF50YGXtywECU1nulYdsSlfh0,12223
249
233
  edsl/surveys/RuleCollection.py,sha256=VBx9-OuBBFIJlRYfpbWIjMVFSA5iMwTzdx5yl8giQA8,14871
250
- edsl/surveys/Survey.py,sha256=EYXkA0CzgpTIlwnVG21NQgBUo-vMRZhXrkP2sbT5hq4,72125
234
+ edsl/surveys/Survey.py,sha256=aLdUpsVeIVMoCRoN1j4rUhg0yQOSfSGS5Zc_lLFVpoU,72199
251
235
  edsl/surveys/SurveyCSS.py,sha256=NjJezs2sTlgFprN6IukjGKwNYmNdXnLjzV2w5K4z4RI,8415
252
236
  edsl/surveys/SurveyExportMixin.py,sha256=Kvkd2ku2Kemsn2Nw-Yt8GTnGFcUqfEiKznmisAeO7ck,8339
253
237
  edsl/surveys/SurveyFlowVisualizationMixin.py,sha256=dEG_f-L0ZAyWU5Ta584IX5GZurjVt1tbIISo5z61Jvg,4004
@@ -256,7 +240,7 @@ edsl/surveys/__init__.py,sha256=vjMYVlP95fHVqqw2FfKXRuYbTArZkZr1nK4FnXzZWzs,129
256
240
  edsl/surveys/base.py,sha256=XJHGEbbsH6hlYYkmI4isVLD8guLz8BdhR-eQRL78mc4,1115
257
241
  edsl/surveys/descriptors.py,sha256=3B-hBVvGpLlVBCyOnPuxkLjesvpr0QIuATbggp_MJ7o,2076
258
242
  edsl/surveys/instructions/ChangeInstruction.py,sha256=XDLuI5nVI60iJz1w1kLaKmYryAYE0XIyRbElBtNjVVM,1265
259
- edsl/surveys/instructions/Instruction.py,sha256=WaTGihAQ6lCtm5W4vknTamkPzDp-eIAirdtGV37fdbc,925
243
+ edsl/surveys/instructions/Instruction.py,sha256=l_ET6HCMt0ZU1BBHqP4EYKjEjeAS5Eg6NBJsCLO70R8,1352
260
244
  edsl/surveys/instructions/InstructionCollection.py,sha256=eO-i9zgbk8q0D8hnawDrioS-iqXOEE7eKm5cgYNgwrU,2931
261
245
  edsl/surveys/instructions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
262
246
  edsl/templates/error_reporting/base.html,sha256=IkV24ZaUCNX303ZqVTWkFsJOnu5BG_SULrKN2YejUxQ,552
@@ -289,7 +273,7 @@ edsl/utilities/interface.py,sha256=AaKpWiwWBwP2swNXmnFlIf3ZFsjfsR5bjXQAW47tD-8,1
289
273
  edsl/utilities/repair_functions.py,sha256=tftmklAqam6LOQQu_-9U44N-llycffhW8LfO63vBmNw,929
290
274
  edsl/utilities/restricted_python.py,sha256=5-_zUhrNbos7pLhDl9nr8d24auRlquR6w-vKkmNjPiA,2060
291
275
  edsl/utilities/utilities.py,sha256=gqMtWWNEZkWLiRR9vHW-VRNy2bStEPlJ-I2aK9CwFiQ,11367
292
- edsl-0.1.35.dist-info/LICENSE,sha256=_qszBDs8KHShVYcYzdMz3HNMtH-fKN_p5zjoVAVumFc,1111
293
- edsl-0.1.35.dist-info/METADATA,sha256=eyPEBXgJt4VgO_f7yPO8rIjvRDT2_RFjbCzF3bvVftk,4471
294
- edsl-0.1.35.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
295
- edsl-0.1.35.dist-info/RECORD,,
276
+ edsl-0.1.36.dist-info/LICENSE,sha256=_qszBDs8KHShVYcYzdMz3HNMtH-fKN_p5zjoVAVumFc,1111
277
+ edsl-0.1.36.dist-info/METADATA,sha256=lZJYr_IidbSFQsimcYfFyeFudkB2Brv0HVTeCi5anCY,4471
278
+ edsl-0.1.36.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
279
+ edsl-0.1.36.dist-info/RECORD,,
@@ -1,78 +0,0 @@
1
- from edsl.questions import QuestionBase
2
- from edsl import Question, Scenario, Model, Agent
3
-
4
- from edsl.language_models.LanguageModel import LanguageModel
5
-
6
-
7
- class FailedQuestion:
8
- # tests/jobs/test_Interview.py::test_handle_model_exceptions
9
-
10
- # (Pdb) dir(self.exception.__traceback__)
11
- # ['tb_frame', 'tb_lasti', 'tb_lineno', 'tb_next']
12
-
13
- def __init__(
14
- self, question, scenario, model, agent, raw_model_response, exception, prompts
15
- ):
16
- self.question = question
17
- self.scenario = scenario
18
- self.model = model
19
- self.agent = agent
20
- self.raw_model_response = raw_model_response # JSON
21
- self.exception = exception
22
- self.prompts = prompts
23
-
24
- def to_dict(self):
25
- return {
26
- "question": self.question._to_dict(),
27
- "scenario": self.scenario._to_dict(),
28
- "model": self.model._to_dict(),
29
- "agent": self.agent._to_dict(),
30
- "raw_model_response": self.raw_model_response,
31
- "exception": self.exception.__class__.__name__, # self.exception,
32
- "prompts": self.prompts,
33
- }
34
-
35
- @classmethod
36
- def from_dict(cls, data):
37
- question = QuestionBase.from_dict(data["question"])
38
- scenario = Scenario.from_dict(data["scenario"])
39
- model = LanguageModel.from_dict(data["model"])
40
- agent = Agent.from_dict(data["agent"])
41
- raw_model_response = data["raw_model_response"]
42
- exception = data["exception"]
43
- prompts = data["prompts"]
44
- return cls(
45
- question, scenario, model, agent, raw_model_response, exception, prompts
46
- )
47
-
48
- def __repr__(self):
49
- return f"{self.__class__.__name__}(question={repr(self.question)}, scenario={repr(self.scenario)}, model={repr(self.model)}, agent={repr(self.agent)}, raw_model_response={repr(self.raw_model_response)}, exception={repr(self.exception)})"
50
-
51
- @property
52
- def jobs(self):
53
- return self.question.by(self.scenario).by(self.agent).by(self.model)
54
-
55
- def rerun(self):
56
- results = self.jobs.run()
57
- return results
58
-
59
- def help(self):
60
- pass
61
-
62
- @classmethod
63
- def example(cls):
64
- from edsl.language_models.utilities import create_language_model
65
- from edsl.language_models.utilities import create_survey
66
-
67
- survey = create_survey(2, chained=False, take_scenario=False)
68
- fail_at_number = 1
69
- model = create_language_model(ValueError, fail_at_number)()
70
- from edsl import Survey
71
-
72
- results = survey.by(model).run()
73
- return results.failed_questions[0][0]
74
-
75
-
76
- if __name__ == "__main__":
77
- fq = FailedQuestion.example()
78
- new_fq = FailedQuestion.from_dict(fq.to_dict())
@@ -1,33 +0,0 @@
1
- from edsl.jobs.interviews.InterviewStatusLog import InterviewStatusLog
2
- from edsl.jobs.tokens.InterviewTokenUsage import InterviewTokenUsage
3
-
4
- from edsl.jobs.interviews.InterviewStatusDictionary import InterviewStatusDictionary
5
-
6
-
7
- class InterviewStatusMixin:
8
- @property
9
- def has_exceptions(self) -> bool:
10
- """Return True if there are exceptions."""
11
- return len(self.exceptions) > 0
12
-
13
- @property
14
- def task_status_logs(self) -> InterviewStatusLog:
15
- """Return the task status logs for the interview.
16
-
17
- The keys are the question names; the values are the lists of status log changes for each task.
18
- """
19
- for task_creator in self.task_creators.values():
20
- self._task_status_log_dict[
21
- task_creator.question.question_name
22
- ] = task_creator.status_log
23
- return self._task_status_log_dict
24
-
25
- @property
26
- def token_usage(self) -> InterviewTokenUsage:
27
- """Determine how many tokens were used for the interview."""
28
- return self.task_creators.token_usage
29
-
30
- @property
31
- def interview_status(self) -> InterviewStatusDictionary:
32
- """Return a dictionary mapping task status codes to counts."""
33
- return self.task_creators.interview_status
@@ -1,13 +0,0 @@
1
- from collections import UserDict
2
-
3
-
4
- class TokensUsed(UserDict):
5
- """ "Container for tokens used by a task."""
6
-
7
- def __init__(self, cached_tokens, new_tokens):
8
- d = {"cached_tokens": cached_tokens, "new_tokens": new_tokens}
9
- super().__init__(d)
10
-
11
-
12
- if __name__ == "__main__":
13
- pass
@@ -1,10 +0,0 @@
1
- """Class for creating question instructions to be used in a survey."""
2
-
3
- from edsl.prompts.Prompt import PromptBase
4
- from edsl.prompts.prompt_config import ComponentTypes
5
-
6
-
7
- class QuestionInstuctionsBase(PromptBase):
8
- """Class for creating question instructions to be used in a survey."""
9
-
10
- component_type = ComponentTypes.QUESTION_INSTRUCTIONS