edsl 0.1.37.dev2__tar.gz → 0.1.37.dev3__tar.gz

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 (307) hide show
  1. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/LICENSE +21 -21
  2. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/PKG-INFO +1 -1
  3. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/README.md +55 -55
  4. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/Base.py +303 -303
  5. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/BaseDiff.py +260 -260
  6. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/TemplateLoader.py +24 -24
  7. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/__init__.py +48 -48
  8. edsl-0.1.37.dev3/edsl/__version__.py +1 -0
  9. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/agents/Agent.py +804 -804
  10. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/agents/AgentList.py +345 -345
  11. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/agents/Invigilator.py +222 -222
  12. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/agents/InvigilatorBase.py +305 -305
  13. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/agents/PromptConstructor.py +312 -312
  14. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/agents/__init__.py +3 -3
  15. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/agents/descriptors.py +86 -86
  16. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/agents/prompt_helpers.py +129 -129
  17. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/auto/AutoStudy.py +117 -117
  18. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/auto/StageBase.py +230 -230
  19. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/auto/StageGenerateSurvey.py +178 -178
  20. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/auto/StageLabelQuestions.py +125 -125
  21. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/auto/StagePersona.py +61 -61
  22. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/auto/StagePersonaDimensionValueRanges.py +88 -88
  23. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/auto/StagePersonaDimensionValues.py +74 -74
  24. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/auto/StagePersonaDimensions.py +69 -69
  25. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/auto/StageQuestions.py +73 -73
  26. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/auto/SurveyCreatorPipeline.py +21 -21
  27. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/auto/utilities.py +224 -224
  28. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/base/Base.py +289 -289
  29. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/config.py +149 -149
  30. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/conjure/AgentConstructionMixin.py +152 -152
  31. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/conjure/Conjure.py +62 -62
  32. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/conjure/InputData.py +659 -659
  33. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/conjure/InputDataCSV.py +48 -48
  34. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/conjure/InputDataMixinQuestionStats.py +182 -182
  35. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/conjure/InputDataPyRead.py +91 -91
  36. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/conjure/InputDataSPSS.py +8 -8
  37. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/conjure/InputDataStata.py +8 -8
  38. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/conjure/QuestionOptionMixin.py +76 -76
  39. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/conjure/QuestionTypeMixin.py +23 -23
  40. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/conjure/RawQuestion.py +65 -65
  41. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/conjure/SurveyResponses.py +7 -7
  42. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/conjure/__init__.py +9 -9
  43. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/conjure/naming_utilities.py +263 -263
  44. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/conjure/utilities.py +201 -201
  45. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/conversation/Conversation.py +238 -238
  46. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/conversation/car_buying.py +58 -58
  47. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/conversation/mug_negotiation.py +81 -81
  48. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/conversation/next_speaker_utilities.py +93 -93
  49. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/coop/PriceFetcher.py +54 -54
  50. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/coop/__init__.py +2 -2
  51. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/coop/coop.py +824 -824
  52. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/coop/utils.py +131 -131
  53. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/data/Cache.py +527 -527
  54. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/data/CacheEntry.py +228 -228
  55. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/data/CacheHandler.py +149 -149
  56. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/data/RemoteCacheSync.py +97 -97
  57. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/data/SQLiteDict.py +292 -292
  58. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/data/__init__.py +4 -4
  59. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/data/orm.py +10 -10
  60. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/data_transfer_models.py +73 -73
  61. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/enums.py +173 -173
  62. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/exceptions/__init__.py +50 -50
  63. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/exceptions/agents.py +40 -40
  64. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/exceptions/configuration.py +16 -16
  65. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/exceptions/coop.py +10 -10
  66. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/exceptions/data.py +14 -14
  67. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/exceptions/general.py +34 -34
  68. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/exceptions/jobs.py +33 -33
  69. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/exceptions/language_models.py +63 -63
  70. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/exceptions/prompts.py +15 -15
  71. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/exceptions/questions.py +91 -91
  72. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/exceptions/results.py +26 -26
  73. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/exceptions/surveys.py +34 -34
  74. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/inference_services/AnthropicService.py +87 -87
  75. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/inference_services/AwsBedrock.py +115 -115
  76. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/inference_services/AzureAI.py +217 -217
  77. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/inference_services/DeepInfraService.py +18 -18
  78. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/inference_services/GoogleService.py +156 -156
  79. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/inference_services/GroqService.py +20 -20
  80. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/inference_services/InferenceServiceABC.py +147 -147
  81. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/inference_services/InferenceServicesCollection.py +74 -74
  82. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/inference_services/MistralAIService.py +123 -123
  83. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/inference_services/OllamaService.py +18 -18
  84. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/inference_services/OpenAIService.py +224 -224
  85. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/inference_services/TestService.py +89 -89
  86. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/inference_services/TogetherAIService.py +170 -170
  87. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/inference_services/models_available_cache.py +118 -118
  88. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/inference_services/rate_limits_cache.py +25 -25
  89. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/inference_services/registry.py +39 -39
  90. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/inference_services/write_available.py +10 -10
  91. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/Answers.py +56 -56
  92. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/Jobs.py +1121 -1112
  93. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/__init__.py +1 -1
  94. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/buckets/BucketCollection.py +63 -63
  95. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/buckets/ModelBuckets.py +65 -65
  96. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/buckets/TokenBucket.py +248 -248
  97. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/interviews/Interview.py +661 -661
  98. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/interviews/InterviewExceptionCollection.py +99 -99
  99. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/interviews/InterviewExceptionEntry.py +182 -182
  100. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/interviews/InterviewStatistic.py +63 -63
  101. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/interviews/InterviewStatisticsCollection.py +25 -25
  102. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/interviews/InterviewStatusDictionary.py +78 -78
  103. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/interviews/InterviewStatusLog.py +92 -92
  104. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/interviews/ReportErrors.py +66 -66
  105. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/interviews/interview_status_enum.py +9 -9
  106. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/runners/JobsRunnerAsyncio.py +338 -338
  107. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/runners/JobsRunnerStatus.py +332 -332
  108. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/tasks/QuestionTaskCreator.py +242 -242
  109. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/tasks/TaskCreators.py +64 -64
  110. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/tasks/TaskHistory.py +441 -441
  111. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/tasks/TaskStatusLog.py +23 -23
  112. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/tasks/task_status_enum.py +163 -163
  113. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/tokens/InterviewTokenUsage.py +27 -27
  114. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/tokens/TokenUsage.py +34 -34
  115. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/language_models/LanguageModel.py +718 -718
  116. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/language_models/ModelList.py +102 -102
  117. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/language_models/RegisterLanguageModelsMeta.py +184 -184
  118. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/language_models/__init__.py +2 -2
  119. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/language_models/fake_openai_call.py +15 -15
  120. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/language_models/fake_openai_service.py +61 -61
  121. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/language_models/registry.py +137 -137
  122. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/language_models/repair.py +156 -156
  123. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/language_models/unused/ReplicateBase.py +83 -83
  124. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/language_models/utilities.py +64 -64
  125. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/notebooks/Notebook.py +259 -259
  126. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/notebooks/__init__.py +1 -1
  127. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/prompts/Prompt.py +353 -353
  128. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/prompts/__init__.py +2 -2
  129. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/AnswerValidatorMixin.py +289 -289
  130. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/QuestionBase.py +616 -616
  131. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/QuestionBaseGenMixin.py +161 -161
  132. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/QuestionBasePromptsMixin.py +266 -266
  133. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/QuestionBudget.py +227 -227
  134. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/QuestionCheckBox.py +359 -359
  135. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/QuestionExtract.py +183 -183
  136. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/QuestionFreeText.py +114 -114
  137. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/QuestionFunctional.py +159 -159
  138. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/QuestionList.py +231 -231
  139. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/QuestionMultipleChoice.py +286 -286
  140. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/QuestionNumerical.py +153 -153
  141. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/QuestionRank.py +324 -324
  142. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/Quick.py +41 -41
  143. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/RegisterQuestionsMeta.py +71 -71
  144. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/ResponseValidatorABC.py +174 -174
  145. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/SimpleAskMixin.py +73 -73
  146. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/__init__.py +26 -26
  147. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/compose_questions.py +98 -98
  148. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/decorators.py +21 -21
  149. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/derived/QuestionLikertFive.py +76 -76
  150. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/derived/QuestionLinearScale.py +87 -87
  151. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/derived/QuestionTopK.py +91 -91
  152. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/derived/QuestionYesNo.py +82 -82
  153. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/descriptors.py +418 -418
  154. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/prompt_templates/question_budget.jinja +13 -13
  155. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/prompt_templates/question_checkbox.jinja +32 -32
  156. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/prompt_templates/question_extract.jinja +11 -11
  157. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/prompt_templates/question_free_text.jinja +3 -3
  158. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/prompt_templates/question_linear_scale.jinja +11 -11
  159. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/prompt_templates/question_list.jinja +17 -17
  160. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/prompt_templates/question_multiple_choice.jinja +33 -33
  161. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/prompt_templates/question_numerical.jinja +36 -36
  162. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/question_registry.py +147 -147
  163. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/settings.py +12 -12
  164. edsl-0.1.37.dev3/edsl/questions/templates/__pycache__/__init__.cpython-312.pyc +0 -0
  165. edsl-0.1.37.dev3/edsl/questions/templates/budget/__pycache__/__init__.cpython-312.pyc +0 -0
  166. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/budget/answering_instructions.jinja +7 -7
  167. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/budget/question_presentation.jinja +7 -7
  168. edsl-0.1.37.dev3/edsl/questions/templates/checkbox/__pycache__/__init__.cpython-312.pyc +0 -0
  169. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/checkbox/answering_instructions.jinja +10 -10
  170. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/checkbox/question_presentation.jinja +22 -22
  171. edsl-0.1.37.dev3/edsl/questions/templates/extract/__pycache__/__init__.cpython-312.pyc +0 -0
  172. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/extract/answering_instructions.jinja +7 -7
  173. edsl-0.1.37.dev3/edsl/questions/templates/free_text/__pycache__/__init__.cpython-312.pyc +0 -0
  174. edsl-0.1.37.dev3/edsl/questions/templates/likert_five/__pycache__/__init__.cpython-312.pyc +0 -0
  175. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/likert_five/answering_instructions.jinja +10 -10
  176. {edsl-0.1.37.dev2/edsl/questions/templates/multiple_choice → edsl-0.1.37.dev3/edsl/questions/templates/likert_five}/question_presentation.jinja +11 -11
  177. edsl-0.1.37.dev3/edsl/questions/templates/linear_scale/__pycache__/__init__.cpython-312.pyc +0 -0
  178. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/linear_scale/answering_instructions.jinja +5 -5
  179. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/linear_scale/question_presentation.jinja +5 -5
  180. edsl-0.1.37.dev3/edsl/questions/templates/list/__pycache__/__init__.cpython-312.pyc +0 -0
  181. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/list/answering_instructions.jinja +3 -3
  182. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/list/question_presentation.jinja +5 -5
  183. edsl-0.1.37.dev3/edsl/questions/templates/multiple_choice/__pycache__/__init__.cpython-312.pyc +0 -0
  184. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/multiple_choice/answering_instructions.jinja +9 -9
  185. {edsl-0.1.37.dev2/edsl/questions/templates/likert_five → edsl-0.1.37.dev3/edsl/questions/templates/multiple_choice}/question_presentation.jinja +11 -11
  186. edsl-0.1.37.dev3/edsl/questions/templates/numerical/__pycache__/__init__.cpython-312.pyc +0 -0
  187. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/numerical/answering_instructions.jinja +6 -6
  188. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/numerical/question_presentation.jinja +6 -6
  189. edsl-0.1.37.dev3/edsl/questions/templates/rank/__pycache__/__init__.cpython-312.pyc +0 -0
  190. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/rank/answering_instructions.jinja +11 -11
  191. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/rank/question_presentation.jinja +15 -15
  192. edsl-0.1.37.dev3/edsl/questions/templates/top_k/__pycache__/__init__.cpython-312.pyc +0 -0
  193. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/top_k/answering_instructions.jinja +8 -8
  194. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/top_k/question_presentation.jinja +22 -22
  195. edsl-0.1.37.dev3/edsl/questions/templates/yes_no/__pycache__/__init__.cpython-312.pyc +0 -0
  196. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/yes_no/answering_instructions.jinja +6 -6
  197. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/yes_no/question_presentation.jinja +11 -11
  198. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/results/Dataset.py +293 -293
  199. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/results/DatasetExportMixin.py +693 -693
  200. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/results/DatasetTree.py +145 -145
  201. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/results/Result.py +435 -435
  202. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/results/Results.py +1160 -1160
  203. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/results/ResultsDBMixin.py +238 -238
  204. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/results/ResultsExportMixin.py +43 -43
  205. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/results/ResultsFetchMixin.py +33 -33
  206. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/results/ResultsGGMixin.py +121 -121
  207. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/results/ResultsToolsMixin.py +98 -98
  208. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/results/Selector.py +118 -118
  209. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/results/__init__.py +2 -2
  210. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/results/tree_explore.py +115 -115
  211. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/scenarios/FileStore.py +458 -458
  212. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/scenarios/Scenario.py +510 -510
  213. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/scenarios/ScenarioHtmlMixin.py +59 -59
  214. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/scenarios/ScenarioList.py +1101 -1101
  215. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/scenarios/ScenarioListExportMixin.py +52 -52
  216. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/scenarios/ScenarioListPdfMixin.py +261 -261
  217. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/scenarios/__init__.py +4 -4
  218. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/shared.py +1 -1
  219. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/study/ObjectEntry.py +173 -173
  220. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/study/ProofOfWork.py +113 -113
  221. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/study/SnapShot.py +80 -80
  222. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/study/Study.py +528 -528
  223. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/study/__init__.py +4 -4
  224. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/surveys/DAG.py +148 -148
  225. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/surveys/Memory.py +31 -31
  226. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/surveys/MemoryPlan.py +244 -244
  227. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/surveys/Rule.py +324 -324
  228. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/surveys/RuleCollection.py +387 -387
  229. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/surveys/Survey.py +1772 -1772
  230. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/surveys/SurveyCSS.py +261 -261
  231. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/surveys/SurveyExportMixin.py +259 -259
  232. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/surveys/SurveyFlowVisualizationMixin.py +121 -121
  233. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/surveys/SurveyQualtricsImport.py +284 -284
  234. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/surveys/__init__.py +3 -3
  235. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/surveys/base.py +53 -53
  236. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/surveys/descriptors.py +56 -56
  237. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/surveys/instructions/ChangeInstruction.py +47 -47
  238. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/surveys/instructions/Instruction.py +51 -51
  239. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/surveys/instructions/InstructionCollection.py +77 -77
  240. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/templates/error_reporting/base.html +23 -23
  241. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/templates/error_reporting/exceptions_by_model.html +34 -34
  242. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/templates/error_reporting/exceptions_by_question_name.html +16 -16
  243. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/templates/error_reporting/exceptions_by_type.html +16 -16
  244. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/templates/error_reporting/interview_details.html +115 -115
  245. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/templates/error_reporting/interviews.html +9 -9
  246. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/templates/error_reporting/overview.html +4 -4
  247. edsl-0.1.37.dev3/edsl/templates/error_reporting/performance_plot.html +2 -0
  248. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/templates/error_reporting/report.css +73 -73
  249. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/templates/error_reporting/report.html +117 -117
  250. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/templates/error_reporting/report.js +25 -25
  251. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/tools/__init__.py +1 -1
  252. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/tools/clusters.py +192 -192
  253. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/tools/embeddings.py +27 -27
  254. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/tools/embeddings_plotting.py +118 -118
  255. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/tools/plotting.py +112 -112
  256. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/tools/summarize.py +18 -18
  257. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/utilities/SystemInfo.py +28 -28
  258. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/utilities/__init__.py +22 -22
  259. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/utilities/ast_utilities.py +25 -25
  260. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/utilities/data/Registry.py +6 -6
  261. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/utilities/data/__init__.py +1 -1
  262. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/utilities/data/scooter_results.json +1 -1
  263. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/utilities/decorators.py +77 -77
  264. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/utilities/gcp_bucket/cloud_storage.py +96 -96
  265. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/utilities/interface.py +627 -627
  266. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/utilities/repair_functions.py +28 -28
  267. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/utilities/restricted_python.py +70 -70
  268. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/utilities/utilities.py +391 -391
  269. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/pyproject.toml +91 -91
  270. edsl-0.1.37.dev2/edsl/__version__.py +0 -1
  271. edsl-0.1.37.dev2/edsl/questions/templates/__pycache__/__init__.cpython-311.pyc +0 -0
  272. edsl-0.1.37.dev2/edsl/questions/templates/budget/__pycache__/__init__.cpython-311.pyc +0 -0
  273. edsl-0.1.37.dev2/edsl/questions/templates/checkbox/__pycache__/__init__.cpython-311.pyc +0 -0
  274. edsl-0.1.37.dev2/edsl/questions/templates/extract/__pycache__/__init__.cpython-311.pyc +0 -0
  275. edsl-0.1.37.dev2/edsl/questions/templates/free_text/__pycache__/__init__.cpython-311.pyc +0 -0
  276. edsl-0.1.37.dev2/edsl/questions/templates/likert_five/__pycache__/__init__.cpython-311.pyc +0 -0
  277. edsl-0.1.37.dev2/edsl/questions/templates/linear_scale/__pycache__/__init__.cpython-311.pyc +0 -0
  278. edsl-0.1.37.dev2/edsl/questions/templates/list/__pycache__/__init__.cpython-311.pyc +0 -0
  279. edsl-0.1.37.dev2/edsl/questions/templates/multiple_choice/__pycache__/__init__.cpython-311.pyc +0 -0
  280. edsl-0.1.37.dev2/edsl/questions/templates/numerical/__pycache__/__init__.cpython-311.pyc +0 -0
  281. edsl-0.1.37.dev2/edsl/questions/templates/rank/__pycache__/__init__.cpython-311.pyc +0 -0
  282. edsl-0.1.37.dev2/edsl/questions/templates/top_k/__pycache__/__init__.cpython-311.pyc +0 -0
  283. edsl-0.1.37.dev2/edsl/questions/templates/yes_no/__pycache__/__init__.cpython-311.pyc +0 -0
  284. edsl-0.1.37.dev2/edsl/templates/error_reporting/performance_plot.html +0 -2
  285. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/conjure/examples/placeholder.txt +0 -0
  286. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/inference_services/__init__.py +0 -0
  287. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/jobs/runners/JobsRunnerStatusData.py +0 -0
  288. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/derived/__init__.py +0 -0
  289. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/__init__.py +0 -0
  290. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/budget/__init__.py +0 -0
  291. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/checkbox/__init__.py +0 -0
  292. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/extract/__init__.py +0 -0
  293. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/extract/question_presentation.jinja +0 -0
  294. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/free_text/__init__.py +0 -0
  295. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/free_text/answering_instructions.jinja +0 -0
  296. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/free_text/question_presentation.jinja +0 -0
  297. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/likert_five/__init__.py +0 -0
  298. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/linear_scale/__init__.py +0 -0
  299. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/list/__init__.py +0 -0
  300. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/multiple_choice/__init__.py +0 -0
  301. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/multiple_choice/html.jinja +0 -0
  302. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/numerical/__init__.py +0 -0
  303. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/rank/__init__.py +0 -0
  304. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/top_k/__init__.py +0 -0
  305. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/questions/templates/yes_no/__init__.py +0 -0
  306. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/surveys/instructions/__init__.py +0 -0
  307. {edsl-0.1.37.dev2 → edsl-0.1.37.dev3}/edsl/utilities/gcp_bucket/__init__.py +0 -0
@@ -1,21 +1,21 @@
1
- The MIT License
2
-
3
- Copyright (c) Apostolos Filippas, John Joseph Horton, Roberta Horton.
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in
13
- all copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- THE SOFTWARE.
1
+ The MIT License
2
+
3
+ Copyright (c) Apostolos Filippas, John Joseph Horton, Roberta Horton.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: edsl
3
- Version: 0.1.37.dev2
3
+ Version: 0.1.37.dev3
4
4
  Summary: Create and analyze LLM-based surveys
5
5
  Home-page: https://www.expectedparrot.com/
6
6
  License: MIT
@@ -1,55 +1,55 @@
1
- # Expected Parrot Domain-Specific Language
2
- <p align="center">
3
- <img src="https://github.com/expectedparrot/edsl/blob/main/static/logo.png?raw=true" alt="edsl.png" width="100"/>
4
- </p>
5
-
6
- The Expected Parrot Domain-Specific Language (EDSL) package lets you conduct computational social science and market research with AI. Use it to design surveys and experiments, simulate responses with large language models, and perform data labeling and other research tasks. Results are formatted as specified datasets and come with built-in methods for analyzing, visualizing, and sharing.
7
-
8
- ## 🔗 Links
9
- - [PyPI](https://pypi.org/project/edsl/)
10
- - [Documentation](https://docs.expectedparrot.com)
11
- - [Getting started](https://docs.expectedparrot.com/en/latest/starter_tutorial.html)
12
- - [Discord](https://discord.com/invite/mxAYkjfy9m)
13
- - [Twitter](https://x.com/ExpectedParrot)
14
- - [LinkedIn](https://www.linkedin.com/company/expectedparrot/)
15
- - [Blog](https://blog.expectedparrot.com)
16
-
17
- ## 🌎 Hello, World!
18
- A quick example:
19
-
20
- ```python
21
- # Import a question type
22
- from edsl import QuestionMultipleChoice
23
-
24
- # Construct a question using the question type template
25
- q = QuestionMultipleChoice(
26
- question_name="example_question",
27
- question_text="How do you feel today?",
28
- question_options=["Bad", "OK", "Good"]
29
- )
30
-
31
- # Run it with the default language model
32
- results = q.run()
33
-
34
- # Inspect the results in a dataset
35
- results.select("example_question").print()
36
- ```
37
-
38
- Output:
39
- ```python
40
- ┏━━━━━━━━━━━━━━━━━━━┓
41
- ┃ answer ┃
42
- ┃ .example_question ┃
43
- ┡━━━━━━━━━━━━━━━━━━━┩
44
- │ Good │
45
- └───────────────────┘
46
- ```
47
-
48
- ## 💻 Requirements
49
- * EDSL is compatible with Python 3.9 - 3.12.
50
- * API keys for large language models that you want to use, stored in a `.env` file.
51
- See instructions on [storing API keys](https://docs.expectedparrot.com/en/latest/api_keys.html).
52
-
53
- ## 💡 Contributions, feature requests & bugs
54
- Interested in contributing? Want us to add a new feature? Found a bug for us to squash?
55
- Please send us an email at [info@expectedparrot.com](mailto:info@expectedparrot.com) or message us at our [Discord channel](https://discord.com/invite/mxAYkjfy9m).
1
+ # Expected Parrot Domain-Specific Language
2
+ <p align="center">
3
+ <img src="https://github.com/expectedparrot/edsl/blob/main/static/logo.png?raw=true" alt="edsl.png" width="100"/>
4
+ </p>
5
+
6
+ The Expected Parrot Domain-Specific Language (EDSL) package lets you conduct computational social science and market research with AI. Use it to design surveys and experiments, simulate responses with large language models, and perform data labeling and other research tasks. Results are formatted as specified datasets and come with built-in methods for analyzing, visualizing, and sharing.
7
+
8
+ ## 🔗 Links
9
+ - [PyPI](https://pypi.org/project/edsl/)
10
+ - [Documentation](https://docs.expectedparrot.com)
11
+ - [Getting started](https://docs.expectedparrot.com/en/latest/starter_tutorial.html)
12
+ - [Discord](https://discord.com/invite/mxAYkjfy9m)
13
+ - [Twitter](https://x.com/ExpectedParrot)
14
+ - [LinkedIn](https://www.linkedin.com/company/expectedparrot/)
15
+ - [Blog](https://blog.expectedparrot.com)
16
+
17
+ ## 🌎 Hello, World!
18
+ A quick example:
19
+
20
+ ```python
21
+ # Import a question type
22
+ from edsl import QuestionMultipleChoice
23
+
24
+ # Construct a question using the question type template
25
+ q = QuestionMultipleChoice(
26
+ question_name="example_question",
27
+ question_text="How do you feel today?",
28
+ question_options=["Bad", "OK", "Good"]
29
+ )
30
+
31
+ # Run it with the default language model
32
+ results = q.run()
33
+
34
+ # Inspect the results in a dataset
35
+ results.select("example_question").print()
36
+ ```
37
+
38
+ Output:
39
+ ```python
40
+ ┏━━━━━━━━━━━━━━━━━━━┓
41
+ ┃ answer ┃
42
+ ┃ .example_question ┃
43
+ ┡━━━━━━━━━━━━━━━━━━━┩
44
+ │ Good │
45
+ └───────────────────┘
46
+ ```
47
+
48
+ ## 💻 Requirements
49
+ * EDSL is compatible with Python 3.9 - 3.12.
50
+ * API keys for large language models that you want to use, stored in a `.env` file.
51
+ See instructions on [storing API keys](https://docs.expectedparrot.com/en/latest/api_keys.html).
52
+
53
+ ## 💡 Contributions, feature requests & bugs
54
+ Interested in contributing? Want us to add a new feature? Found a bug for us to squash?
55
+ Please send us an email at [info@expectedparrot.com](mailto:info@expectedparrot.com) or message us at our [Discord channel](https://discord.com/invite/mxAYkjfy9m).