edsl 0.1.38.dev1__py3-none-any.whl → 0.1.38.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/Base.py +303 -303
- edsl/BaseDiff.py +260 -260
- edsl/TemplateLoader.py +24 -24
- edsl/__init__.py +49 -48
- edsl/__version__.py +1 -1
- edsl/agents/Agent.py +858 -855
- edsl/agents/AgentList.py +362 -350
- edsl/agents/Invigilator.py +222 -222
- edsl/agents/InvigilatorBase.py +284 -284
- edsl/agents/PromptConstructor.py +353 -353
- edsl/agents/__init__.py +3 -3
- edsl/agents/descriptors.py +99 -99
- edsl/agents/prompt_helpers.py +129 -129
- edsl/auto/AutoStudy.py +117 -117
- edsl/auto/StageBase.py +230 -230
- edsl/auto/StageGenerateSurvey.py +178 -178
- edsl/auto/StageLabelQuestions.py +125 -125
- edsl/auto/StagePersona.py +61 -61
- edsl/auto/StagePersonaDimensionValueRanges.py +88 -88
- edsl/auto/StagePersonaDimensionValues.py +74 -74
- edsl/auto/StagePersonaDimensions.py +69 -69
- edsl/auto/StageQuestions.py +73 -73
- edsl/auto/SurveyCreatorPipeline.py +21 -21
- edsl/auto/utilities.py +224 -224
- edsl/base/Base.py +279 -289
- edsl/config.py +149 -149
- edsl/conversation/Conversation.py +290 -290
- edsl/conversation/car_buying.py +58 -58
- edsl/conversation/chips.py +95 -95
- edsl/conversation/mug_negotiation.py +81 -81
- edsl/conversation/next_speaker_utilities.py +93 -93
- edsl/coop/PriceFetcher.py +54 -54
- edsl/coop/__init__.py +2 -2
- edsl/coop/coop.py +961 -958
- edsl/coop/utils.py +131 -131
- edsl/data/Cache.py +530 -527
- edsl/data/CacheEntry.py +228 -228
- edsl/data/CacheHandler.py +149 -149
- edsl/data/RemoteCacheSync.py +97 -97
- edsl/data/SQLiteDict.py +292 -292
- edsl/data/__init__.py +4 -4
- edsl/data/orm.py +10 -10
- edsl/data_transfer_models.py +73 -73
- edsl/enums.py +173 -173
- edsl/exceptions/BaseException.py +21 -21
- edsl/exceptions/__init__.py +54 -54
- edsl/exceptions/agents.py +42 -38
- edsl/exceptions/cache.py +5 -0
- edsl/exceptions/configuration.py +16 -16
- edsl/exceptions/coop.py +10 -10
- edsl/exceptions/data.py +14 -14
- edsl/exceptions/general.py +34 -34
- edsl/exceptions/jobs.py +33 -33
- edsl/exceptions/language_models.py +63 -63
- edsl/exceptions/prompts.py +15 -15
- edsl/exceptions/questions.py +91 -91
- edsl/exceptions/results.py +29 -29
- edsl/exceptions/scenarios.py +22 -22
- edsl/exceptions/surveys.py +37 -37
- edsl/inference_services/AnthropicService.py +87 -87
- edsl/inference_services/AwsBedrock.py +120 -120
- edsl/inference_services/AzureAI.py +217 -217
- edsl/inference_services/DeepInfraService.py +18 -18
- edsl/inference_services/GoogleService.py +156 -156
- edsl/inference_services/GroqService.py +20 -20
- edsl/inference_services/InferenceServiceABC.py +147 -147
- edsl/inference_services/InferenceServicesCollection.py +97 -97
- edsl/inference_services/MistralAIService.py +123 -123
- edsl/inference_services/OllamaService.py +18 -18
- edsl/inference_services/OpenAIService.py +224 -224
- edsl/inference_services/TestService.py +89 -89
- edsl/inference_services/TogetherAIService.py +170 -170
- edsl/inference_services/models_available_cache.py +118 -118
- edsl/inference_services/rate_limits_cache.py +25 -25
- edsl/inference_services/registry.py +39 -39
- edsl/inference_services/write_available.py +10 -10
- edsl/jobs/Answers.py +56 -56
- edsl/jobs/Jobs.py +1358 -1347
- edsl/jobs/__init__.py +1 -1
- edsl/jobs/buckets/BucketCollection.py +63 -63
- edsl/jobs/buckets/ModelBuckets.py +65 -65
- edsl/jobs/buckets/TokenBucket.py +251 -248
- edsl/jobs/interviews/Interview.py +661 -661
- edsl/jobs/interviews/InterviewExceptionCollection.py +99 -99
- edsl/jobs/interviews/InterviewExceptionEntry.py +186 -186
- edsl/jobs/interviews/InterviewStatistic.py +63 -63
- edsl/jobs/interviews/InterviewStatisticsCollection.py +25 -25
- edsl/jobs/interviews/InterviewStatusDictionary.py +78 -78
- edsl/jobs/interviews/InterviewStatusLog.py +92 -92
- edsl/jobs/interviews/ReportErrors.py +66 -66
- edsl/jobs/interviews/interview_status_enum.py +9 -9
- edsl/jobs/runners/JobsRunnerAsyncio.py +361 -338
- edsl/jobs/runners/JobsRunnerStatus.py +332 -332
- edsl/jobs/tasks/QuestionTaskCreator.py +242 -242
- edsl/jobs/tasks/TaskCreators.py +64 -64
- edsl/jobs/tasks/TaskHistory.py +451 -442
- edsl/jobs/tasks/TaskStatusLog.py +23 -23
- edsl/jobs/tasks/task_status_enum.py +163 -163
- edsl/jobs/tokens/InterviewTokenUsage.py +27 -27
- edsl/jobs/tokens/TokenUsage.py +34 -34
- edsl/language_models/KeyLookup.py +30 -30
- edsl/language_models/LanguageModel.py +708 -706
- edsl/language_models/ModelList.py +109 -102
- edsl/language_models/RegisterLanguageModelsMeta.py +184 -184
- edsl/language_models/__init__.py +3 -3
- edsl/language_models/fake_openai_call.py +15 -15
- edsl/language_models/fake_openai_service.py +61 -61
- edsl/language_models/registry.py +137 -137
- edsl/language_models/repair.py +156 -156
- edsl/language_models/unused/ReplicateBase.py +83 -83
- edsl/language_models/utilities.py +64 -64
- edsl/notebooks/Notebook.py +258 -259
- edsl/notebooks/__init__.py +1 -1
- edsl/prompts/Prompt.py +357 -357
- edsl/prompts/__init__.py +2 -2
- edsl/questions/AnswerValidatorMixin.py +289 -289
- edsl/questions/QuestionBase.py +660 -656
- edsl/questions/QuestionBaseGenMixin.py +161 -161
- edsl/questions/QuestionBasePromptsMixin.py +217 -234
- edsl/questions/QuestionBudget.py +227 -227
- edsl/questions/QuestionCheckBox.py +359 -359
- edsl/questions/QuestionExtract.py +183 -183
- edsl/questions/QuestionFreeText.py +114 -114
- edsl/questions/QuestionFunctional.py +166 -159
- edsl/questions/QuestionList.py +231 -231
- edsl/questions/QuestionMultipleChoice.py +286 -286
- edsl/questions/QuestionNumerical.py +153 -153
- edsl/questions/QuestionRank.py +324 -324
- edsl/questions/Quick.py +41 -41
- edsl/questions/RegisterQuestionsMeta.py +71 -71
- edsl/questions/ResponseValidatorABC.py +174 -174
- edsl/questions/SimpleAskMixin.py +73 -73
- edsl/questions/__init__.py +26 -26
- edsl/questions/compose_questions.py +98 -98
- edsl/questions/decorators.py +21 -21
- edsl/questions/derived/QuestionLikertFive.py +76 -76
- edsl/questions/derived/QuestionLinearScale.py +87 -87
- edsl/questions/derived/QuestionTopK.py +93 -91
- edsl/questions/derived/QuestionYesNo.py +82 -82
- edsl/questions/descriptors.py +413 -413
- edsl/questions/prompt_templates/question_budget.jinja +13 -13
- edsl/questions/prompt_templates/question_checkbox.jinja +32 -32
- edsl/questions/prompt_templates/question_extract.jinja +11 -11
- edsl/questions/prompt_templates/question_free_text.jinja +3 -3
- edsl/questions/prompt_templates/question_linear_scale.jinja +11 -11
- edsl/questions/prompt_templates/question_list.jinja +17 -17
- edsl/questions/prompt_templates/question_multiple_choice.jinja +33 -33
- edsl/questions/prompt_templates/question_numerical.jinja +36 -36
- edsl/questions/question_registry.py +147 -147
- edsl/questions/settings.py +12 -12
- edsl/questions/templates/budget/answering_instructions.jinja +7 -7
- edsl/questions/templates/budget/question_presentation.jinja +7 -7
- edsl/questions/templates/checkbox/answering_instructions.jinja +10 -10
- edsl/questions/templates/checkbox/question_presentation.jinja +22 -22
- edsl/questions/templates/extract/answering_instructions.jinja +7 -7
- edsl/questions/templates/likert_five/answering_instructions.jinja +10 -10
- edsl/questions/templates/likert_five/question_presentation.jinja +11 -11
- edsl/questions/templates/linear_scale/answering_instructions.jinja +5 -5
- edsl/questions/templates/linear_scale/question_presentation.jinja +5 -5
- edsl/questions/templates/list/answering_instructions.jinja +3 -3
- edsl/questions/templates/list/question_presentation.jinja +5 -5
- edsl/questions/templates/multiple_choice/answering_instructions.jinja +9 -9
- edsl/questions/templates/multiple_choice/question_presentation.jinja +11 -11
- edsl/questions/templates/numerical/answering_instructions.jinja +6 -6
- edsl/questions/templates/numerical/question_presentation.jinja +6 -6
- edsl/questions/templates/rank/answering_instructions.jinja +11 -11
- edsl/questions/templates/rank/question_presentation.jinja +15 -15
- edsl/questions/templates/top_k/answering_instructions.jinja +8 -8
- edsl/questions/templates/top_k/question_presentation.jinja +22 -22
- edsl/questions/templates/yes_no/answering_instructions.jinja +6 -6
- edsl/questions/templates/yes_no/question_presentation.jinja +11 -11
- edsl/results/Dataset.py +293 -293
- edsl/results/DatasetExportMixin.py +717 -717
- edsl/results/DatasetTree.py +145 -145
- edsl/results/Result.py +456 -450
- edsl/results/Results.py +1071 -1071
- edsl/results/ResultsDBMixin.py +238 -238
- edsl/results/ResultsExportMixin.py +43 -43
- edsl/results/ResultsFetchMixin.py +33 -33
- edsl/results/ResultsGGMixin.py +121 -121
- edsl/results/ResultsToolsMixin.py +98 -98
- edsl/results/Selector.py +135 -135
- edsl/results/__init__.py +2 -2
- edsl/results/tree_explore.py +115 -115
- edsl/scenarios/FileStore.py +458 -458
- edsl/scenarios/Scenario.py +544 -546
- edsl/scenarios/ScenarioHtmlMixin.py +64 -64
- edsl/scenarios/ScenarioList.py +1112 -1112
- edsl/scenarios/ScenarioListExportMixin.py +52 -52
- edsl/scenarios/ScenarioListPdfMixin.py +261 -261
- edsl/scenarios/__init__.py +4 -4
- edsl/shared.py +1 -1
- edsl/study/ObjectEntry.py +173 -173
- edsl/study/ProofOfWork.py +113 -113
- edsl/study/SnapShot.py +80 -80
- edsl/study/Study.py +528 -528
- edsl/study/__init__.py +4 -4
- edsl/surveys/DAG.py +148 -148
- edsl/surveys/Memory.py +31 -31
- edsl/surveys/MemoryPlan.py +244 -244
- edsl/surveys/Rule.py +326 -330
- edsl/surveys/RuleCollection.py +387 -387
- edsl/surveys/Survey.py +1787 -1795
- edsl/surveys/SurveyCSS.py +261 -261
- edsl/surveys/SurveyExportMixin.py +259 -259
- edsl/surveys/SurveyFlowVisualizationMixin.py +121 -121
- edsl/surveys/SurveyQualtricsImport.py +284 -284
- edsl/surveys/__init__.py +3 -3
- edsl/surveys/base.py +53 -53
- edsl/surveys/descriptors.py +56 -56
- edsl/surveys/instructions/ChangeInstruction.py +49 -47
- edsl/surveys/instructions/Instruction.py +53 -51
- edsl/surveys/instructions/InstructionCollection.py +77 -77
- edsl/templates/error_reporting/base.html +23 -23
- edsl/templates/error_reporting/exceptions_by_model.html +34 -34
- edsl/templates/error_reporting/exceptions_by_question_name.html +16 -16
- edsl/templates/error_reporting/exceptions_by_type.html +16 -16
- edsl/templates/error_reporting/interview_details.html +115 -115
- edsl/templates/error_reporting/interviews.html +9 -9
- edsl/templates/error_reporting/overview.html +4 -4
- edsl/templates/error_reporting/performance_plot.html +1 -1
- edsl/templates/error_reporting/report.css +73 -73
- edsl/templates/error_reporting/report.html +117 -117
- edsl/templates/error_reporting/report.js +25 -25
- edsl/tools/__init__.py +1 -1
- edsl/tools/clusters.py +192 -192
- edsl/tools/embeddings.py +27 -27
- edsl/tools/embeddings_plotting.py +118 -118
- edsl/tools/plotting.py +112 -112
- edsl/tools/summarize.py +18 -18
- edsl/utilities/SystemInfo.py +28 -28
- edsl/utilities/__init__.py +22 -22
- edsl/utilities/ast_utilities.py +25 -25
- edsl/utilities/data/Registry.py +6 -6
- edsl/utilities/data/__init__.py +1 -1
- edsl/utilities/data/scooter_results.json +1 -1
- edsl/utilities/decorators.py +77 -77
- edsl/utilities/gcp_bucket/cloud_storage.py +96 -96
- edsl/utilities/interface.py +627 -627
- edsl/{conjure → utilities}/naming_utilities.py +263 -263
- edsl/utilities/repair_functions.py +28 -28
- edsl/utilities/restricted_python.py +70 -70
- edsl/utilities/utilities.py +409 -409
- {edsl-0.1.38.dev1.dist-info → edsl-0.1.38.dev3.dist-info}/LICENSE +21 -21
- {edsl-0.1.38.dev1.dist-info → edsl-0.1.38.dev3.dist-info}/METADATA +1 -1
- edsl-0.1.38.dev3.dist-info/RECORD +269 -0
- edsl/conjure/AgentConstructionMixin.py +0 -160
- edsl/conjure/Conjure.py +0 -62
- edsl/conjure/InputData.py +0 -659
- edsl/conjure/InputDataCSV.py +0 -48
- edsl/conjure/InputDataMixinQuestionStats.py +0 -182
- edsl/conjure/InputDataPyRead.py +0 -91
- edsl/conjure/InputDataSPSS.py +0 -8
- edsl/conjure/InputDataStata.py +0 -8
- edsl/conjure/QuestionOptionMixin.py +0 -76
- edsl/conjure/QuestionTypeMixin.py +0 -23
- edsl/conjure/RawQuestion.py +0 -65
- edsl/conjure/SurveyResponses.py +0 -7
- edsl/conjure/__init__.py +0 -9
- edsl/conjure/examples/placeholder.txt +0 -0
- edsl/conjure/utilities.py +0 -201
- edsl-0.1.38.dev1.dist-info/RECORD +0 -283
- {edsl-0.1.38.dev1.dist-info → edsl-0.1.38.dev3.dist-info}/WHEEL +0 -0
edsl/study/SnapShot.py
CHANGED
@@ -1,80 +1,80 @@
|
|
1
|
-
import inspect
|
2
|
-
from typing import Generator, List, Optional
|
3
|
-
|
4
|
-
|
5
|
-
class SnapShot:
|
6
|
-
def __init__(self, namespace, exclude: Optional[List] = None):
|
7
|
-
self.namespace = namespace
|
8
|
-
self.exclude = exclude or []
|
9
|
-
self.edsl_objects = dict(self._get_edsl_objects(namespace=self.namespace))
|
10
|
-
self.edsl_classes = dict(self._get_edsl_classes(namespace=self.namespace))
|
11
|
-
|
12
|
-
def _all_object_keys(self):
|
13
|
-
return self.namespace.keys()
|
14
|
-
|
15
|
-
def __repr__(self):
|
16
|
-
return f"SnapShot(edsl_objects={self.edsl_objects}, edsl_classes={self.edsl_objects})"
|
17
|
-
|
18
|
-
def _get_edsl_classes(
|
19
|
-
self, namespace: dict
|
20
|
-
) -> Generator[tuple[str, type], None, None]:
|
21
|
-
"""Get all EDSL classes in the namespace.
|
22
|
-
|
23
|
-
:param namespace: The namespace to search for EDSL classes. The default is the global namespace.
|
24
|
-
|
25
|
-
>>> sn = SnapShot(namespace = {})
|
26
|
-
>>> sn.edsl_classes
|
27
|
-
{}
|
28
|
-
|
29
|
-
>>> from edsl.data.Cache import Cache
|
30
|
-
>>> sn = SnapShot(namespace = globals())
|
31
|
-
>>> sn.edsl_classes
|
32
|
-
{'Cache': <class 'edsl.data.Cache.Cache'>}
|
33
|
-
"""
|
34
|
-
from edsl.Base import RegisterSubclassesMeta
|
35
|
-
from edsl import QuestionBase
|
36
|
-
|
37
|
-
all_edsl_objects = RegisterSubclassesMeta.get_registry()
|
38
|
-
|
39
|
-
for name, value in namespace.items():
|
40
|
-
if (
|
41
|
-
inspect.isclass(value)
|
42
|
-
and name in all_edsl_objects
|
43
|
-
and value != RegisterSubclassesMeta
|
44
|
-
):
|
45
|
-
yield name, value
|
46
|
-
if inspect.isclass(value) and issubclass(value, QuestionBase):
|
47
|
-
yield name, value
|
48
|
-
|
49
|
-
def _get_edsl_objects(self, namespace) -> Generator[tuple[str, type], None, None]:
|
50
|
-
"""Get all EDSL objects in the global namespace.
|
51
|
-
|
52
|
-
>>> sn = SnapShot(namespace = globals())
|
53
|
-
>>> sn.edsl_objects
|
54
|
-
{}
|
55
|
-
|
56
|
-
"""
|
57
|
-
from edsl.Base import Base
|
58
|
-
from edsl.study.Study import Study
|
59
|
-
|
60
|
-
def is_edsl_object(obj):
|
61
|
-
package_name = "edsl"
|
62
|
-
cls = obj.__class__
|
63
|
-
module_name = cls.__module__
|
64
|
-
return module_name.startswith(package_name)
|
65
|
-
|
66
|
-
for name, value in namespace.items():
|
67
|
-
# TODO check this code logic (if there are other objects with to_dict method that are not from edsl)
|
68
|
-
if (
|
69
|
-
is_edsl_object(value)
|
70
|
-
and hasattr(value, "to_dict")
|
71
|
-
and not inspect.isclass(value)
|
72
|
-
and value.__class__ not in [o.__class__ for o in self.exclude]
|
73
|
-
):
|
74
|
-
yield name, value
|
75
|
-
|
76
|
-
|
77
|
-
if __name__ == "__main__":
|
78
|
-
import doctest
|
79
|
-
|
80
|
-
doctest.testmod(optionflags=doctest.ELLIPSIS)
|
1
|
+
import inspect
|
2
|
+
from typing import Generator, List, Optional
|
3
|
+
|
4
|
+
|
5
|
+
class SnapShot:
|
6
|
+
def __init__(self, namespace, exclude: Optional[List] = None):
|
7
|
+
self.namespace = namespace
|
8
|
+
self.exclude = exclude or []
|
9
|
+
self.edsl_objects = dict(self._get_edsl_objects(namespace=self.namespace))
|
10
|
+
self.edsl_classes = dict(self._get_edsl_classes(namespace=self.namespace))
|
11
|
+
|
12
|
+
def _all_object_keys(self):
|
13
|
+
return self.namespace.keys()
|
14
|
+
|
15
|
+
def __repr__(self):
|
16
|
+
return f"SnapShot(edsl_objects={self.edsl_objects}, edsl_classes={self.edsl_objects})"
|
17
|
+
|
18
|
+
def _get_edsl_classes(
|
19
|
+
self, namespace: dict
|
20
|
+
) -> Generator[tuple[str, type], None, None]:
|
21
|
+
"""Get all EDSL classes in the namespace.
|
22
|
+
|
23
|
+
:param namespace: The namespace to search for EDSL classes. The default is the global namespace.
|
24
|
+
|
25
|
+
>>> sn = SnapShot(namespace = {})
|
26
|
+
>>> sn.edsl_classes
|
27
|
+
{}
|
28
|
+
|
29
|
+
>>> from edsl.data.Cache import Cache
|
30
|
+
>>> sn = SnapShot(namespace = globals())
|
31
|
+
>>> sn.edsl_classes
|
32
|
+
{'Cache': <class 'edsl.data.Cache.Cache'>}
|
33
|
+
"""
|
34
|
+
from edsl.Base import RegisterSubclassesMeta
|
35
|
+
from edsl import QuestionBase
|
36
|
+
|
37
|
+
all_edsl_objects = RegisterSubclassesMeta.get_registry()
|
38
|
+
|
39
|
+
for name, value in namespace.items():
|
40
|
+
if (
|
41
|
+
inspect.isclass(value)
|
42
|
+
and name in all_edsl_objects
|
43
|
+
and value != RegisterSubclassesMeta
|
44
|
+
):
|
45
|
+
yield name, value
|
46
|
+
if inspect.isclass(value) and issubclass(value, QuestionBase):
|
47
|
+
yield name, value
|
48
|
+
|
49
|
+
def _get_edsl_objects(self, namespace) -> Generator[tuple[str, type], None, None]:
|
50
|
+
"""Get all EDSL objects in the global namespace.
|
51
|
+
|
52
|
+
>>> sn = SnapShot(namespace = globals())
|
53
|
+
>>> sn.edsl_objects
|
54
|
+
{}
|
55
|
+
|
56
|
+
"""
|
57
|
+
from edsl.Base import Base
|
58
|
+
from edsl.study.Study import Study
|
59
|
+
|
60
|
+
def is_edsl_object(obj):
|
61
|
+
package_name = "edsl"
|
62
|
+
cls = obj.__class__
|
63
|
+
module_name = cls.__module__
|
64
|
+
return module_name.startswith(package_name)
|
65
|
+
|
66
|
+
for name, value in namespace.items():
|
67
|
+
# TODO check this code logic (if there are other objects with to_dict method that are not from edsl)
|
68
|
+
if (
|
69
|
+
is_edsl_object(value)
|
70
|
+
and hasattr(value, "to_dict")
|
71
|
+
and not inspect.isclass(value)
|
72
|
+
and value.__class__ not in [o.__class__ for o in self.exclude]
|
73
|
+
):
|
74
|
+
yield name, value
|
75
|
+
|
76
|
+
|
77
|
+
if __name__ == "__main__":
|
78
|
+
import doctest
|
79
|
+
|
80
|
+
doctest.testmod(optionflags=doctest.ELLIPSIS)
|