bead 0.1.0__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.
- bead/__init__.py +11 -0
- bead/__main__.py +11 -0
- bead/active_learning/__init__.py +15 -0
- bead/active_learning/config.py +231 -0
- bead/active_learning/loop.py +566 -0
- bead/active_learning/models/__init__.py +24 -0
- bead/active_learning/models/base.py +852 -0
- bead/active_learning/models/binary.py +910 -0
- bead/active_learning/models/categorical.py +943 -0
- bead/active_learning/models/cloze.py +862 -0
- bead/active_learning/models/forced_choice.py +956 -0
- bead/active_learning/models/free_text.py +773 -0
- bead/active_learning/models/lora.py +365 -0
- bead/active_learning/models/magnitude.py +835 -0
- bead/active_learning/models/multi_select.py +795 -0
- bead/active_learning/models/ordinal_scale.py +811 -0
- bead/active_learning/models/peft_adapter.py +155 -0
- bead/active_learning/models/random_effects.py +639 -0
- bead/active_learning/selection.py +354 -0
- bead/active_learning/strategies.py +391 -0
- bead/active_learning/trainers/__init__.py +26 -0
- bead/active_learning/trainers/base.py +210 -0
- bead/active_learning/trainers/data_collator.py +172 -0
- bead/active_learning/trainers/dataset_utils.py +261 -0
- bead/active_learning/trainers/huggingface.py +304 -0
- bead/active_learning/trainers/lightning.py +324 -0
- bead/active_learning/trainers/metrics.py +424 -0
- bead/active_learning/trainers/mixed_effects.py +551 -0
- bead/active_learning/trainers/model_wrapper.py +509 -0
- bead/active_learning/trainers/registry.py +104 -0
- bead/adapters/__init__.py +11 -0
- bead/adapters/huggingface.py +61 -0
- bead/behavioral/__init__.py +116 -0
- bead/behavioral/analytics.py +646 -0
- bead/behavioral/extraction.py +343 -0
- bead/behavioral/merging.py +343 -0
- bead/cli/__init__.py +11 -0
- bead/cli/active_learning.py +513 -0
- bead/cli/active_learning_commands.py +779 -0
- bead/cli/completion.py +359 -0
- bead/cli/config.py +624 -0
- bead/cli/constraint_builders.py +286 -0
- bead/cli/deployment.py +859 -0
- bead/cli/deployment_trials.py +493 -0
- bead/cli/deployment_ui.py +332 -0
- bead/cli/display.py +378 -0
- bead/cli/items.py +960 -0
- bead/cli/items_factories.py +776 -0
- bead/cli/list_constraints.py +714 -0
- bead/cli/lists.py +490 -0
- bead/cli/main.py +430 -0
- bead/cli/models.py +877 -0
- bead/cli/resource_loaders.py +621 -0
- bead/cli/resources.py +1036 -0
- bead/cli/shell.py +356 -0
- bead/cli/simulate.py +840 -0
- bead/cli/templates.py +1158 -0
- bead/cli/training.py +1080 -0
- bead/cli/utils.py +614 -0
- bead/cli/workflow.py +1273 -0
- bead/config/__init__.py +68 -0
- bead/config/active_learning.py +1009 -0
- bead/config/config.py +192 -0
- bead/config/defaults.py +118 -0
- bead/config/deployment.py +217 -0
- bead/config/env.py +147 -0
- bead/config/item.py +45 -0
- bead/config/list.py +193 -0
- bead/config/loader.py +149 -0
- bead/config/logging.py +42 -0
- bead/config/model.py +49 -0
- bead/config/paths.py +46 -0
- bead/config/profiles.py +320 -0
- bead/config/resources.py +47 -0
- bead/config/serialization.py +210 -0
- bead/config/simulation.py +206 -0
- bead/config/template.py +238 -0
- bead/config/validation.py +267 -0
- bead/data/__init__.py +65 -0
- bead/data/base.py +87 -0
- bead/data/identifiers.py +97 -0
- bead/data/language_codes.py +61 -0
- bead/data/metadata.py +270 -0
- bead/data/range.py +123 -0
- bead/data/repository.py +358 -0
- bead/data/serialization.py +249 -0
- bead/data/timestamps.py +89 -0
- bead/data/validation.py +349 -0
- bead/data_collection/__init__.py +11 -0
- bead/data_collection/jatos.py +223 -0
- bead/data_collection/merger.py +154 -0
- bead/data_collection/prolific.py +198 -0
- bead/deployment/__init__.py +5 -0
- bead/deployment/distribution.py +402 -0
- bead/deployment/jatos/__init__.py +1 -0
- bead/deployment/jatos/api.py +200 -0
- bead/deployment/jatos/exporter.py +210 -0
- bead/deployment/jspsych/__init__.py +9 -0
- bead/deployment/jspsych/biome.json +44 -0
- bead/deployment/jspsych/config.py +411 -0
- bead/deployment/jspsych/generator.py +598 -0
- bead/deployment/jspsych/package.json +51 -0
- bead/deployment/jspsych/pnpm-lock.yaml +2141 -0
- bead/deployment/jspsych/randomizer.py +299 -0
- bead/deployment/jspsych/src/lib/list-distributor.test.ts +327 -0
- bead/deployment/jspsych/src/lib/list-distributor.ts +1282 -0
- bead/deployment/jspsych/src/lib/randomizer.test.ts +232 -0
- bead/deployment/jspsych/src/lib/randomizer.ts +367 -0
- bead/deployment/jspsych/src/plugins/cloze-dropdown.ts +252 -0
- bead/deployment/jspsych/src/plugins/forced-choice.ts +265 -0
- bead/deployment/jspsych/src/plugins/plugins.test.ts +141 -0
- bead/deployment/jspsych/src/plugins/rating.ts +248 -0
- bead/deployment/jspsych/src/slopit/index.ts +9 -0
- bead/deployment/jspsych/src/types/jatos.d.ts +256 -0
- bead/deployment/jspsych/src/types/jspsych.d.ts +228 -0
- bead/deployment/jspsych/templates/experiment.css +1 -0
- bead/deployment/jspsych/templates/experiment.js.template +289 -0
- bead/deployment/jspsych/templates/index.html +51 -0
- bead/deployment/jspsych/templates/randomizer.js +241 -0
- bead/deployment/jspsych/templates/randomizer.js.template +313 -0
- bead/deployment/jspsych/trials.py +723 -0
- bead/deployment/jspsych/tsconfig.json +23 -0
- bead/deployment/jspsych/tsup.config.ts +30 -0
- bead/deployment/jspsych/ui/__init__.py +1 -0
- bead/deployment/jspsych/ui/components.py +383 -0
- bead/deployment/jspsych/ui/styles.py +411 -0
- bead/dsl/__init__.py +80 -0
- bead/dsl/ast.py +168 -0
- bead/dsl/context.py +178 -0
- bead/dsl/errors.py +71 -0
- bead/dsl/evaluator.py +570 -0
- bead/dsl/grammar.lark +81 -0
- bead/dsl/parser.py +231 -0
- bead/dsl/stdlib.py +929 -0
- bead/evaluation/__init__.py +13 -0
- bead/evaluation/convergence.py +485 -0
- bead/evaluation/interannotator.py +398 -0
- bead/items/__init__.py +40 -0
- bead/items/adapters/__init__.py +70 -0
- bead/items/adapters/anthropic.py +224 -0
- bead/items/adapters/api_utils.py +167 -0
- bead/items/adapters/base.py +216 -0
- bead/items/adapters/google.py +259 -0
- bead/items/adapters/huggingface.py +1074 -0
- bead/items/adapters/openai.py +323 -0
- bead/items/adapters/registry.py +202 -0
- bead/items/adapters/sentence_transformers.py +224 -0
- bead/items/adapters/togetherai.py +309 -0
- bead/items/binary.py +515 -0
- bead/items/cache.py +558 -0
- bead/items/categorical.py +593 -0
- bead/items/cloze.py +757 -0
- bead/items/constructor.py +784 -0
- bead/items/forced_choice.py +413 -0
- bead/items/free_text.py +681 -0
- bead/items/generation.py +432 -0
- bead/items/item.py +396 -0
- bead/items/item_template.py +787 -0
- bead/items/magnitude.py +573 -0
- bead/items/multi_select.py +621 -0
- bead/items/ordinal_scale.py +569 -0
- bead/items/scoring.py +448 -0
- bead/items/validation.py +723 -0
- bead/lists/__init__.py +30 -0
- bead/lists/balancer.py +263 -0
- bead/lists/constraints.py +1067 -0
- bead/lists/experiment_list.py +286 -0
- bead/lists/list_collection.py +378 -0
- bead/lists/partitioner.py +1141 -0
- bead/lists/stratification.py +254 -0
- bead/participants/__init__.py +73 -0
- bead/participants/collection.py +699 -0
- bead/participants/merging.py +312 -0
- bead/participants/metadata_spec.py +491 -0
- bead/participants/models.py +276 -0
- bead/resources/__init__.py +29 -0
- bead/resources/adapters/__init__.py +19 -0
- bead/resources/adapters/base.py +104 -0
- bead/resources/adapters/cache.py +128 -0
- bead/resources/adapters/glazing.py +508 -0
- bead/resources/adapters/registry.py +117 -0
- bead/resources/adapters/unimorph.py +796 -0
- bead/resources/classification.py +856 -0
- bead/resources/constraint_builders.py +329 -0
- bead/resources/constraints.py +165 -0
- bead/resources/lexical_item.py +223 -0
- bead/resources/lexicon.py +744 -0
- bead/resources/loaders.py +209 -0
- bead/resources/template.py +441 -0
- bead/resources/template_collection.py +707 -0
- bead/resources/template_generation.py +349 -0
- bead/simulation/__init__.py +29 -0
- bead/simulation/annotators/__init__.py +15 -0
- bead/simulation/annotators/base.py +175 -0
- bead/simulation/annotators/distance_based.py +135 -0
- bead/simulation/annotators/lm_based.py +114 -0
- bead/simulation/annotators/oracle.py +182 -0
- bead/simulation/annotators/random.py +181 -0
- bead/simulation/dsl_extension/__init__.py +3 -0
- bead/simulation/noise_models/__init__.py +13 -0
- bead/simulation/noise_models/base.py +42 -0
- bead/simulation/noise_models/random_noise.py +82 -0
- bead/simulation/noise_models/systematic.py +132 -0
- bead/simulation/noise_models/temperature.py +86 -0
- bead/simulation/runner.py +144 -0
- bead/simulation/strategies/__init__.py +23 -0
- bead/simulation/strategies/base.py +123 -0
- bead/simulation/strategies/binary.py +103 -0
- bead/simulation/strategies/categorical.py +123 -0
- bead/simulation/strategies/cloze.py +224 -0
- bead/simulation/strategies/forced_choice.py +127 -0
- bead/simulation/strategies/free_text.py +105 -0
- bead/simulation/strategies/magnitude.py +116 -0
- bead/simulation/strategies/multi_select.py +129 -0
- bead/simulation/strategies/ordinal_scale.py +131 -0
- bead/templates/__init__.py +27 -0
- bead/templates/adapters/__init__.py +17 -0
- bead/templates/adapters/base.py +128 -0
- bead/templates/adapters/cache.py +178 -0
- bead/templates/adapters/huggingface.py +312 -0
- bead/templates/combinatorics.py +103 -0
- bead/templates/filler.py +605 -0
- bead/templates/renderers.py +177 -0
- bead/templates/resolver.py +178 -0
- bead/templates/strategies.py +1806 -0
- bead/templates/streaming.py +195 -0
- bead-0.1.0.dist-info/METADATA +212 -0
- bead-0.1.0.dist-info/RECORD +231 -0
- bead-0.1.0.dist-info/WHEEL +4 -0
- bead-0.1.0.dist-info/entry_points.txt +2 -0
- bead-0.1.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"""Streaming template filling for large combinatorial spaces."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from collections.abc import Iterator
|
|
6
|
+
|
|
7
|
+
from bead.data.language_codes import LanguageCode, validate_iso639_code
|
|
8
|
+
from bead.resources.adapters.registry import AdapterRegistry
|
|
9
|
+
from bead.resources.lexical_item import LexicalItem
|
|
10
|
+
from bead.resources.lexicon import Lexicon
|
|
11
|
+
from bead.resources.template import Template
|
|
12
|
+
from bead.templates.combinatorics import cartesian_product
|
|
13
|
+
from bead.templates.filler import FilledTemplate
|
|
14
|
+
from bead.templates.resolver import ConstraintResolver
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class StreamingFiller:
|
|
18
|
+
"""Fill templates with lazy evaluation.
|
|
19
|
+
|
|
20
|
+
Generate filled templates one at a time without storing
|
|
21
|
+
all combinations in memory. Use for very large combinatorial
|
|
22
|
+
spaces where ExhaustiveStrategy would cause OOM.
|
|
23
|
+
|
|
24
|
+
Parameters
|
|
25
|
+
----------
|
|
26
|
+
lexicon : Lexicon
|
|
27
|
+
Lexicon containing candidate items.
|
|
28
|
+
adapter_registry : AdapterRegistry | None
|
|
29
|
+
Adapter registry for resource-based constraints.
|
|
30
|
+
max_combinations : int | None
|
|
31
|
+
Maximum combinations to generate. Default: None (unlimited).
|
|
32
|
+
|
|
33
|
+
Examples
|
|
34
|
+
--------
|
|
35
|
+
>>> filler = StreamingFiller(lexicon, max_combinations=1000)
|
|
36
|
+
>>> for filled in filler.stream(template):
|
|
37
|
+
... process(filled) # process one at a time
|
|
38
|
+
... if some_condition:
|
|
39
|
+
... break # can stop early
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
def __init__(
|
|
43
|
+
self,
|
|
44
|
+
lexicon: Lexicon,
|
|
45
|
+
adapter_registry: AdapterRegistry | None = None,
|
|
46
|
+
max_combinations: int | None = None,
|
|
47
|
+
) -> None:
|
|
48
|
+
self.lexicon = lexicon
|
|
49
|
+
self.adapter_registry = adapter_registry
|
|
50
|
+
self.max_combinations = max_combinations
|
|
51
|
+
|
|
52
|
+
self.resolver = ConstraintResolver()
|
|
53
|
+
|
|
54
|
+
def stream(
|
|
55
|
+
self,
|
|
56
|
+
template: Template,
|
|
57
|
+
language_code: LanguageCode | None = None,
|
|
58
|
+
) -> Iterator[FilledTemplate]:
|
|
59
|
+
"""Stream filled templates lazily.
|
|
60
|
+
|
|
61
|
+
Generate filled templates one at a time using lazy evaluation.
|
|
62
|
+
Memory-efficient for large combinatorial spaces.
|
|
63
|
+
|
|
64
|
+
Parameters
|
|
65
|
+
----------
|
|
66
|
+
template : Template
|
|
67
|
+
Template to fill.
|
|
68
|
+
language_code : LanguageCode | None
|
|
69
|
+
Optional language filter.
|
|
70
|
+
|
|
71
|
+
Yields
|
|
72
|
+
------
|
|
73
|
+
FilledTemplate
|
|
74
|
+
Filled template instances.
|
|
75
|
+
|
|
76
|
+
Raises
|
|
77
|
+
------
|
|
78
|
+
ValueError
|
|
79
|
+
If any slot has no valid items.
|
|
80
|
+
|
|
81
|
+
Examples
|
|
82
|
+
--------
|
|
83
|
+
>>> for i, filled in enumerate(filler.stream(template)):
|
|
84
|
+
... if i >= 100:
|
|
85
|
+
... break # take first 100
|
|
86
|
+
... print(filled.rendered_text)
|
|
87
|
+
"""
|
|
88
|
+
# normalize language code to ISO 639-3 format if provided
|
|
89
|
+
normalized_language_code = validate_iso639_code(language_code)
|
|
90
|
+
|
|
91
|
+
# resolve slot constraints
|
|
92
|
+
slot_items = self._resolve_slot_constraints(template, normalized_language_code)
|
|
93
|
+
|
|
94
|
+
# check for empty slots
|
|
95
|
+
empty_slots = [name for name, items in slot_items.items() if not items]
|
|
96
|
+
if empty_slots:
|
|
97
|
+
raise ValueError(f"No valid items for slots: {empty_slots}")
|
|
98
|
+
|
|
99
|
+
# get ordered slot names and item lists
|
|
100
|
+
slot_names = list(slot_items.keys())
|
|
101
|
+
item_lists = [slot_items[name] for name in slot_names]
|
|
102
|
+
|
|
103
|
+
# stream combinations
|
|
104
|
+
count = 0
|
|
105
|
+
for combo_tuple in cartesian_product(*item_lists):
|
|
106
|
+
if self.max_combinations and count >= self.max_combinations:
|
|
107
|
+
break
|
|
108
|
+
|
|
109
|
+
# create slot_fillers dict
|
|
110
|
+
slot_fillers = dict(zip(slot_names, combo_tuple, strict=True))
|
|
111
|
+
|
|
112
|
+
# render template
|
|
113
|
+
rendered = self._render_template(template, slot_fillers)
|
|
114
|
+
|
|
115
|
+
# create FilledTemplate
|
|
116
|
+
filled = FilledTemplate(
|
|
117
|
+
template_id=str(template.id),
|
|
118
|
+
template_name=template.name,
|
|
119
|
+
slot_fillers=slot_fillers,
|
|
120
|
+
rendered_text=rendered,
|
|
121
|
+
strategy_name="streaming",
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
yield filled
|
|
125
|
+
count += 1
|
|
126
|
+
|
|
127
|
+
def _resolve_slot_constraints(
|
|
128
|
+
self,
|
|
129
|
+
template: Template,
|
|
130
|
+
language_code: LanguageCode | None,
|
|
131
|
+
) -> dict[str, list[LexicalItem]]:
|
|
132
|
+
"""Resolve constraints for each slot.
|
|
133
|
+
|
|
134
|
+
Parameters
|
|
135
|
+
----------
|
|
136
|
+
template : Template
|
|
137
|
+
Template with slots and constraints.
|
|
138
|
+
language_code : LanguageCode | None
|
|
139
|
+
Optional language filter.
|
|
140
|
+
|
|
141
|
+
Returns
|
|
142
|
+
-------
|
|
143
|
+
dict[str, list[LexicalItem]]
|
|
144
|
+
Mapping of slot names to valid items.
|
|
145
|
+
"""
|
|
146
|
+
# normalize language code if provided
|
|
147
|
+
normalized_lang = validate_iso639_code(language_code) if language_code else None
|
|
148
|
+
|
|
149
|
+
slot_items: dict[str, list[LexicalItem]] = {}
|
|
150
|
+
for slot_name, slot in template.slots.items():
|
|
151
|
+
candidates: list[LexicalItem] = []
|
|
152
|
+
for item in self.lexicon.items.values():
|
|
153
|
+
# filter by language code if specified
|
|
154
|
+
if normalized_lang:
|
|
155
|
+
# normalize item language code for comparison
|
|
156
|
+
item_lang = (
|
|
157
|
+
validate_iso639_code(item.language_code)
|
|
158
|
+
if item.language_code
|
|
159
|
+
else None
|
|
160
|
+
)
|
|
161
|
+
if item_lang != normalized_lang:
|
|
162
|
+
continue
|
|
163
|
+
|
|
164
|
+
# check if item satisfies slot constraints
|
|
165
|
+
if self.resolver.evaluate_slot_constraints(item, slot.constraints):
|
|
166
|
+
candidates.append(item)
|
|
167
|
+
|
|
168
|
+
slot_items[slot_name] = candidates
|
|
169
|
+
|
|
170
|
+
return slot_items
|
|
171
|
+
|
|
172
|
+
def _render_template(
|
|
173
|
+
self,
|
|
174
|
+
template: Template,
|
|
175
|
+
slot_fillers: dict[str, LexicalItem],
|
|
176
|
+
) -> str:
|
|
177
|
+
"""Render template string with slot fillers.
|
|
178
|
+
|
|
179
|
+
Parameters
|
|
180
|
+
----------
|
|
181
|
+
template : Template
|
|
182
|
+
Template with template_string.
|
|
183
|
+
slot_fillers : dict[str, LexicalItem]
|
|
184
|
+
Items filling each slot.
|
|
185
|
+
|
|
186
|
+
Returns
|
|
187
|
+
-------
|
|
188
|
+
str
|
|
189
|
+
Rendered template string.
|
|
190
|
+
"""
|
|
191
|
+
rendered = template.template_string
|
|
192
|
+
for slot_name, item in slot_fillers.items():
|
|
193
|
+
placeholder = f"{{{slot_name}}}"
|
|
194
|
+
rendered = rendered.replace(placeholder, item.lemma)
|
|
195
|
+
return rendered
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: bead
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Lexicon and Template Collection Construction Pipeline for Acceptability and Inference Judgment Data
|
|
5
|
+
Project-URL: Homepage, https://github.com/FACTSlab/bead
|
|
6
|
+
Project-URL: Documentation, https://bead.readthedocs.io
|
|
7
|
+
Project-URL: Repository, https://github.com/FACTSlab/bead
|
|
8
|
+
Project-URL: Issues, https://github.com/FACTSlab/bead/issues
|
|
9
|
+
Project-URL: Changelog, https://github.com/FACTSlab/bead/blob/main/CHANGELOG.md
|
|
10
|
+
Author-email: Aaron Steven White <aaron.white@rochester.edu>
|
|
11
|
+
License: MIT
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Keywords: active-learning,experiments,linguistics,nlp,psycholinguistics
|
|
14
|
+
Classifier: Development Status :: 4 - Beta
|
|
15
|
+
Classifier: Intended Audience :: Science/Research
|
|
16
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
21
|
+
Classifier: Topic :: Text Processing :: Linguistic
|
|
22
|
+
Classifier: Typing :: Typed
|
|
23
|
+
Requires-Python: >=3.13
|
|
24
|
+
Requires-Dist: accelerate>=0.25.0
|
|
25
|
+
Requires-Dist: click>=8.0.0
|
|
26
|
+
Requires-Dist: datasets>=2.14.0
|
|
27
|
+
Requires-Dist: evaluate>=0.4.0
|
|
28
|
+
Requires-Dist: glazing>=0.2.0
|
|
29
|
+
Requires-Dist: jinja2>=3.0.0
|
|
30
|
+
Requires-Dist: krippendorff>=0.6.0
|
|
31
|
+
Requires-Dist: langcodes>=3.3.0
|
|
32
|
+
Requires-Dist: lark>=1.0.0
|
|
33
|
+
Requires-Dist: pandas>=2.0.0
|
|
34
|
+
Requires-Dist: peft>=0.6.0
|
|
35
|
+
Requires-Dist: polars>=0.19.0
|
|
36
|
+
Requires-Dist: prompt-toolkit>=3.0.0
|
|
37
|
+
Requires-Dist: psutil>=5.9.0
|
|
38
|
+
Requires-Dist: pydantic>=2.0.0
|
|
39
|
+
Requires-Dist: pyyaml>=6.0.0
|
|
40
|
+
Requires-Dist: rich>=13.0.0
|
|
41
|
+
Requires-Dist: scikit-learn>=1.3.0
|
|
42
|
+
Requires-Dist: scipy>=1.11.0
|
|
43
|
+
Requires-Dist: sentence-transformers>=2.0.0
|
|
44
|
+
Requires-Dist: statsmodels>=0.14.6
|
|
45
|
+
Requires-Dist: torch>=2.0.0
|
|
46
|
+
Requires-Dist: transformers>=4.35.0
|
|
47
|
+
Requires-Dist: typer>=0.9.0
|
|
48
|
+
Requires-Dist: unimorph>=0.0.4
|
|
49
|
+
Requires-Dist: uuid-utils>=0.7.0
|
|
50
|
+
Provides-Extra: api
|
|
51
|
+
Requires-Dist: anthropic>=0.8.0; extra == 'api'
|
|
52
|
+
Requires-Dist: google-generativeai>=0.3.0; extra == 'api'
|
|
53
|
+
Requires-Dist: openai>=1.0.0; extra == 'api'
|
|
54
|
+
Provides-Extra: behavioral-analysis
|
|
55
|
+
Requires-Dist: slopit>=0.1.0; extra == 'behavioral-analysis'
|
|
56
|
+
Provides-Extra: dev
|
|
57
|
+
Requires-Dist: pandas-stubs>=2.0.0; extra == 'dev'
|
|
58
|
+
Requires-Dist: pyright>=1.1.0; extra == 'dev'
|
|
59
|
+
Requires-Dist: pytest-codeblocks>=0.17.0; extra == 'dev'
|
|
60
|
+
Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
|
|
61
|
+
Requires-Dist: pytest-env>=1.0.0; extra == 'dev'
|
|
62
|
+
Requires-Dist: pytest-examples>=0.0.10; extra == 'dev'
|
|
63
|
+
Requires-Dist: pytest-mock>=3.11.0; extra == 'dev'
|
|
64
|
+
Requires-Dist: pytest>=7.4.0; extra == 'dev'
|
|
65
|
+
Requires-Dist: ruff>=0.1.0; extra == 'dev'
|
|
66
|
+
Provides-Extra: stats
|
|
67
|
+
Requires-Dist: statsmodels>=0.14.0; extra == 'stats'
|
|
68
|
+
Provides-Extra: training
|
|
69
|
+
Requires-Dist: pytorch-lightning>=2.0.0; extra == 'training'
|
|
70
|
+
Requires-Dist: tensorboard>=2.13.0; extra == 'training'
|
|
71
|
+
Provides-Extra: ui
|
|
72
|
+
Requires-Dist: textual>=0.40.0; extra == 'ui'
|
|
73
|
+
Description-Content-Type: text/markdown
|
|
74
|
+
|
|
75
|
+
# bead
|
|
76
|
+
|
|
77
|
+
A Python framework for constructing, deploying, and analyzing large-scale linguistic judgment experiments with active learning.
|
|
78
|
+
|
|
79
|
+
[](https://github.com/FACTSlab/bead/actions/workflows/ci.yml)
|
|
80
|
+
[](https://www.python.org/downloads/)
|
|
81
|
+
[](LICENSE)
|
|
82
|
+
[](https://bead.readthedocs.io)
|
|
83
|
+
|
|
84
|
+
## Overview
|
|
85
|
+
|
|
86
|
+
`bead` implements a complete pipeline for linguistic research: from lexical resource construction through experimental deployment to model training with active learning. It handles the combinatorial explosion of linguistic stimuli while maintaining full provenance tracking.
|
|
87
|
+
|
|
88
|
+
The name refers to the way sealant is applied while glazing a window, a play on the [glazing](https://github.com/FACTSlab/glazing) package for accessing VerbNet, PropBank, and FrameNet.
|
|
89
|
+
|
|
90
|
+
## Installation
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Install uv if needed
|
|
94
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
95
|
+
|
|
96
|
+
# Install bead
|
|
97
|
+
uv pip install bead
|
|
98
|
+
|
|
99
|
+
# With optional dependencies
|
|
100
|
+
uv pip install bead[api] # OpenAI, Anthropic, Google APIs
|
|
101
|
+
uv pip install bead[training] # PyTorch Lightning, TensorBoard
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Development
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
git clone https://github.com/FACTSlab/bead.git
|
|
108
|
+
cd bead
|
|
109
|
+
uv sync --all-extras
|
|
110
|
+
uv run pytest tests/
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Always use `uv run` to execute commands.
|
|
114
|
+
|
|
115
|
+
## Quick Start
|
|
116
|
+
|
|
117
|
+
```python
|
|
118
|
+
from bead.resources import LexicalItem, Template, Lexicon
|
|
119
|
+
from bead.templates import TemplateFiller
|
|
120
|
+
from bead.items import ItemConstructor
|
|
121
|
+
from bead.lists import ListPartitioner
|
|
122
|
+
|
|
123
|
+
# 1. Define resources
|
|
124
|
+
verbs = Lexicon(items=[
|
|
125
|
+
LexicalItem(lemma="walk", pos="VERB", features={"transitive": False}),
|
|
126
|
+
LexicalItem(lemma="eat", pos="VERB", features={"transitive": True}),
|
|
127
|
+
])
|
|
128
|
+
|
|
129
|
+
template = Template(
|
|
130
|
+
text="The person {verb} the thing",
|
|
131
|
+
slots=["verb"],
|
|
132
|
+
language_code="en"
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
# 2. Fill templates
|
|
136
|
+
filler = TemplateFiller(strategy="exhaustive")
|
|
137
|
+
filled = filler.fill(templates=[template], lexicons={"verbs": verbs})
|
|
138
|
+
|
|
139
|
+
# 3. Construct items
|
|
140
|
+
constructor = ItemConstructor(models=["gpt2"])
|
|
141
|
+
items = constructor.construct_forced_choice_items(filled, n_alternatives=2)
|
|
142
|
+
|
|
143
|
+
# 4. Partition into lists
|
|
144
|
+
partitioner = ListPartitioner()
|
|
145
|
+
lists = partitioner.partition(items.get_uuids(), n_lists=4)
|
|
146
|
+
|
|
147
|
+
# 5. Deploy
|
|
148
|
+
lists.save("lists/experiment.jsonl")
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Pipeline Stages
|
|
152
|
+
|
|
153
|
+
| Stage | Purpose | Output |
|
|
154
|
+
|-------|---------|--------|
|
|
155
|
+
| **Resources** | Define lexical items and templates | `lexicons/*.jsonl`, `templates/*.jsonl` |
|
|
156
|
+
| **Templates** | Fill templates with lexical items | `filled_templates/*.jsonl` |
|
|
157
|
+
| **Items** | Construct experimental items | `items/*.jsonl` |
|
|
158
|
+
| **Lists** | Partition into balanced lists | `lists/*.jsonl` |
|
|
159
|
+
| **Deployment** | Generate jsPsych experiments | `deployment/*.jzip` |
|
|
160
|
+
| **Training** | Active learning until convergence | Model checkpoints |
|
|
161
|
+
|
|
162
|
+
## Key Features
|
|
163
|
+
|
|
164
|
+
- **Stand-off annotation**: UUID-based references for full provenance tracking
|
|
165
|
+
- **8 task types**: forced-choice, ordinal scale, binary, categorical, multi-select, magnitude, free text, cloze
|
|
166
|
+
- **Constraint satisfaction**: batch and list-level constraints for balanced designs
|
|
167
|
+
- **Model integration**: HuggingFace, OpenAI, Anthropic with caching
|
|
168
|
+
- **Active learning**: uncertainty sampling with convergence detection
|
|
169
|
+
- **jsPsych 8.x**: Material Design UI with JATOS deployment
|
|
170
|
+
|
|
171
|
+
## CLI
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
bead init my-experiment # Create project structure
|
|
175
|
+
bead templates fill # Fill templates
|
|
176
|
+
bead items construct # Construct items
|
|
177
|
+
bead lists partition # Create experiment lists
|
|
178
|
+
bead deploy # Generate jsPsych experiment
|
|
179
|
+
bead training run # Train with active learning
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Documentation
|
|
183
|
+
|
|
184
|
+
Full documentation: [bead.readthedocs.io](https://bead.readthedocs.io)
|
|
185
|
+
|
|
186
|
+
- [Installation Guide](https://bead.readthedocs.io/installation/)
|
|
187
|
+
- [User Guide](https://bead.readthedocs.io/user-guide/)
|
|
188
|
+
- [API Reference](https://bead.readthedocs.io/api/)
|
|
189
|
+
- [Gallery Examples](https://bead.readthedocs.io/examples/)
|
|
190
|
+
|
|
191
|
+
## Contributing
|
|
192
|
+
|
|
193
|
+
Contributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
194
|
+
|
|
195
|
+
## Citation
|
|
196
|
+
|
|
197
|
+
```bibtex
|
|
198
|
+
@software{white2025bead,
|
|
199
|
+
author = {White, Aaron Steven},
|
|
200
|
+
title = {bead: A framework for linguistic judgment experiments},
|
|
201
|
+
year = {2025},
|
|
202
|
+
url = {https://github.com/FACTSlab/bead},
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
## License
|
|
207
|
+
|
|
208
|
+
MIT License. See [LICENSE](LICENSE) for details.
|
|
209
|
+
|
|
210
|
+
## Acknowledgments
|
|
211
|
+
|
|
212
|
+
This project was developed by Aaron Steven White at the University of Rochester with support from the National Science Foundation (NSF-BCS-2237175 *CAREER: Logical Form Induction*, NSF-BCS-2040831 *Computational Modeling of the Internal Structure of Events*). It was architected and implemented with the assistance of Claude Code.
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
bead/__init__.py,sha256=oZY1xAdiVXaM-rAJcJoMJSOrQm9gahcFpNfmA2xoRdA,370
|
|
2
|
+
bead/__main__.py,sha256=cL9ckAts2aTa71sU0DFUZfwRmhkff0QrUTkJgeBfY6A,182
|
|
3
|
+
bead/active_learning/__init__.py,sha256=V0J3aQ-Xbb-S3flq9gfUbvCs_aGB8XJzrJwfnKzLXtg,352
|
|
4
|
+
bead/active_learning/config.py,sha256=C0x0yt3oZrW0ueSzwBrtnnXToztQglnukheX8cdWHz4,8313
|
|
5
|
+
bead/active_learning/loop.py,sha256=vg5RZe1nRW6GANs9sPMzqMRb_NYsSsgauAJtKJMy7WM,20858
|
|
6
|
+
bead/active_learning/selection.py,sha256=nEzk4FFoV9JV27JJmgRTX5bSZmM8nsn7oGupJfM55nA,10811
|
|
7
|
+
bead/active_learning/strategies.py,sha256=nHJiuucUC3jH5a_bqGIz_M6qSuP-2N24DaO2Xr0bRBE,11616
|
|
8
|
+
bead/active_learning/models/__init__.py,sha256=xk8XRuOSHSm_gsetn3NkTumP1MZPPdCrcZUR90r2WFQ,909
|
|
9
|
+
bead/active_learning/models/base.py,sha256=FaSuenvHS6Niul3QZrfGj84S2VQ-eAC4P3Wr4Tdtw40,27599
|
|
10
|
+
bead/active_learning/models/binary.py,sha256=CSH1vxAbfQUzOIBVKrYt0z1A7tT4FG06hi1Bo2swJT4,32954
|
|
11
|
+
bead/active_learning/models/categorical.py,sha256=FPPUYYrlv0r0Uwi13eu9l51vQKDRPegvjrEgG_Ju7Q8,34333
|
|
12
|
+
bead/active_learning/models/cloze.py,sha256=_c_7uuNG4sGiRgx72aJ1M1RBMK-l847XvHNEHWhpdmA,31578
|
|
13
|
+
bead/active_learning/models/forced_choice.py,sha256=LrBUhWEvaSaksMcvuJjgcjadcsMDr6pwjKlMKNF3KyE,34831
|
|
14
|
+
bead/active_learning/models/free_text.py,sha256=SGL42qoOXFtgZuwucnOLskXz4CagVe-Sz1y3DPsyeRk,28402
|
|
15
|
+
bead/active_learning/models/lora.py,sha256=QakYORvKWCNsfk00JW5oEhxuo30DuvFpkicXGV7jyFE,10928
|
|
16
|
+
bead/active_learning/models/magnitude.py,sha256=8J5Ie6Y5Say8nt_qpdiQtv8u7ThBYbscU1TpbMt-YSg,29105
|
|
17
|
+
bead/active_learning/models/multi_select.py,sha256=YqkoZ58xEokoIXzrr7CpQH3NSVnRKlW5VcxhvaXyq78,28574
|
|
18
|
+
bead/active_learning/models/ordinal_scale.py,sha256=pnl-s2YWvGVbUdTjmIhPtSArgCZ6j4S6yoac2IuO2YM,28373
|
|
19
|
+
bead/active_learning/models/peft_adapter.py,sha256=K3ozTNIuZA0uuzXqKPd7Nd5Qoq6QUBTcu1L1ACip3o4,5112
|
|
20
|
+
bead/active_learning/models/random_effects.py,sha256=pP56TnMqYlvS1id3ER6QJDLYdS2ptwXFvz1VODuDv44,23399
|
|
21
|
+
bead/active_learning/trainers/__init__.py,sha256=LI0TC_JGPpnfBQYE-339Owuga-eU_yYv0c94N8E8UKo,721
|
|
22
|
+
bead/active_learning/trainers/base.py,sha256=zjbJG21yheNV-kpO9Xp8dEI2eIH6bf3SeMNZFPradHY,6307
|
|
23
|
+
bead/active_learning/trainers/data_collator.py,sha256=CyCnqHQuwmSKUVdNbim0NdnqUCsGwy5zLDWRX4ny4q0,5770
|
|
24
|
+
bead/active_learning/trainers/dataset_utils.py,sha256=mYqeKriQwfW3KsvSGk1LJ1eKUaIWtDcu4yzcQUW9670,8775
|
|
25
|
+
bead/active_learning/trainers/huggingface.py,sha256=_tocri_M_2XWpSdZEKGMIzMFf-5-6pYMtB2Ia26Ro7U,10372
|
|
26
|
+
bead/active_learning/trainers/lightning.py,sha256=Pk3hj1S4RfQ1O7btrFhvN51Vg4j8Mk3J7HgNj-yKRCQ,10480
|
|
27
|
+
bead/active_learning/trainers/metrics.py,sha256=1_18ULfs1voj6SZUwybqtEIqrzNihnQom-7rWnpeRq0,13881
|
|
28
|
+
bead/active_learning/trainers/mixed_effects.py,sha256=UugmEztq20AbJJxFnSJXKL4Jz8V2YivLj0ExENzcO9g,23213
|
|
29
|
+
bead/active_learning/trainers/model_wrapper.py,sha256=aeOHYWzc4RMQh1MtfaqhSP-kgCEN7FQKAuBrsEPvK9c,17727
|
|
30
|
+
bead/active_learning/trainers/registry.py,sha256=0QaTgBm4h4Q7OOCImYGphzuhM_w0Kpn6VpDrHhq5EDg,2707
|
|
31
|
+
bead/adapters/__init__.py,sha256=oI5qS6PG6q1l-hV7639X816ISW51V74bi5zH-5w1-iQ,283
|
|
32
|
+
bead/adapters/huggingface.py,sha256=QppL8daTbBlnKzinh1S02rrSLaHdaydGhg648ilRc5Y,1683
|
|
33
|
+
bead/behavioral/__init__.py,sha256=NVYYmPYGaEYrbEcXE4qAg86LDHkpQbxdiexCjxSEvNE,3074
|
|
34
|
+
bead/behavioral/analytics.py,sha256=gIPUP1rB41d-a0PCF3q1NYNOQGH2f6LiJi5rXh3rLmE,20835
|
|
35
|
+
bead/behavioral/extraction.py,sha256=jMuNgf2OyVwjm-uJHuJF1wjPq5hK2Hb4Pspy8TyiX7U,9704
|
|
36
|
+
bead/behavioral/merging.py,sha256=QQfXR0nd-qUAQGffOd8DIXMyOQZfysh9hC2ZGimjtsQ,10595
|
|
37
|
+
bead/cli/__init__.py,sha256=AeO4_8DwfPpWrc6rssvcuiz3LPTW2ZknF2GgscMcp0Y,214
|
|
38
|
+
bead/cli/active_learning.py,sha256=vvQDDF7GVIaDSUDC5gGcXAGVyVOs1L7MY0SLnAqjZXg,17009
|
|
39
|
+
bead/cli/active_learning_commands.py,sha256=w9HtOYiOhhBjOQ5ZI9l6Be18JWMGW9q9C4VPRT8hRoo,24812
|
|
40
|
+
bead/cli/completion.py,sha256=IzLJ8q0HDcQKSaqrV_DQ_20UfSwo0aXY4iG2mTtxbPI,10509
|
|
41
|
+
bead/cli/config.py,sha256=MhT_7yJjW80SCOBOx2v_rQvtoM4o9KHATl07asvhjJQ,16978
|
|
42
|
+
bead/cli/constraint_builders.py,sha256=CldrY4NheSXOlYYA2DBe6lJ0Y4nilfrEn6q4J7GlIbs,9946
|
|
43
|
+
bead/cli/deployment.py,sha256=tt3hhCjBT1QLULodFJhAaRfPx1q90RZudlohlydMyoo,29250
|
|
44
|
+
bead/cli/deployment_trials.py,sha256=6Y_dkoFRCKQxUvKBU5-3Z1vGwOLJ40wXR_yraCoPYcc,14553
|
|
45
|
+
bead/cli/deployment_ui.py,sha256=lEj3BIrrjMKCXDMgageTOZSXoqZY-5HVftlkLzvUtFc,10048
|
|
46
|
+
bead/cli/display.py,sha256=W3i4PAkWQ6QA_VLdK8Lhb1DBL3x7Z59Yy4rHo8r3-90,9203
|
|
47
|
+
bead/cli/items.py,sha256=YL4STtlTUxfSVexCYMQ276gTDVTsIlUaUMZwxgKiQKE,29117
|
|
48
|
+
bead/cli/items_factories.py,sha256=S6U1bodUIH3o5-RWJHTPp4CjBeGxS7gVEhMhdgbe01k,19909
|
|
49
|
+
bead/cli/list_constraints.py,sha256=v7GF-yisPV4Ii4oMk6ySB7-zLZO2Zo5B5DEvb07hy4s,17628
|
|
50
|
+
bead/cli/lists.py,sha256=bpJCa12uQPCKdx9u23iOCk81udY-DN0jdoEHsCFySeA,16284
|
|
51
|
+
bead/cli/main.py,sha256=uZsW06tgTWKtgXQkzA0zZ3l_hu5Xsa6S97YO__32rDw,11040
|
|
52
|
+
bead/cli/models.py,sha256=IWx8fIMNlblcMlAqVI4DSUIbNW-o2Ht6bYNGMkGhoPk,28633
|
|
53
|
+
bead/cli/resource_loaders.py,sha256=ob1ZKz1VdH9QaCvQfxqmopx45VExO8Vwudsi9mSGtuk,17906
|
|
54
|
+
bead/cli/resources.py,sha256=k-8y-6nFMPb23fvcsti7Kic3kGchzllwvhEi2qkHGzc,34478
|
|
55
|
+
bead/cli/shell.py,sha256=bbCaIXu0_OJPmO7meLz7YCUsTvk_2KH7Z4SvEOiMFfk,11037
|
|
56
|
+
bead/cli/simulate.py,sha256=QefRLih8tpnJJfeea6siViswTbwtjCsriyqnA3a7WPo,26662
|
|
57
|
+
bead/cli/templates.py,sha256=rV6B-QL6BtXbx2Ogu5hfWOeFoz15YMAK_ypYkZkO4qI,37360
|
|
58
|
+
bead/cli/training.py,sha256=ZKWIopi2m2k_4TLNuKQy7TjyfcohfwgmtbEoBI2gFdA,36403
|
|
59
|
+
bead/cli/utils.py,sha256=JfbJg8Nsbh2h0ZNhAdb-D6NVZX3aNI8ETDvbf7crzjA,16238
|
|
60
|
+
bead/cli/workflow.py,sha256=MwjKxR9VZy9CHsOpVPYuBCeJKH7qk_9cousfePkn-aM,37259
|
|
61
|
+
bead/config/__init__.py,sha256=dcdsSYt2WTszzDH1vL7o-Qgre4v1AN46Gh04Shoybf8,1810
|
|
62
|
+
bead/config/active_learning.py,sha256=Wu21fKTVrOcle4T5-Ud8F00qWBK5M7fhrj3RB0WJfIM,31252
|
|
63
|
+
bead/config/config.py,sha256=Mlk16elSZQksnUT-pUcWUUIJudcT58kKzhADMhXhI_U,6450
|
|
64
|
+
bead/config/defaults.py,sha256=9bDvKTyR6zLnwGN7uOYWdjFdxJjkEOAyZIugpgGzRig,3478
|
|
65
|
+
bead/config/deployment.py,sha256=yY3SB1-P4xGobNXvucp7d44ZAc88OjpQVINgPfaIZpA,6817
|
|
66
|
+
bead/config/env.py,sha256=q97930b8AFrT6TVr86396evRHGTTYG9iT5hXEgGj5zM,3638
|
|
67
|
+
bead/config/item.py,sha256=Q_hSnwIL1jUi8g8BgSSjHPntiIEOIHWIkfy1J1QPNNU,1248
|
|
68
|
+
bead/config/list.py,sha256=5l7CA1CG4Rk-5lxCR3siikgjJ5LIitqe77o1DYO7tAQ,6785
|
|
69
|
+
bead/config/loader.py,sha256=pL05pQWtLA_cd2OAGBCfFCek0Cp7L3ZeZ53QGOK3CZg,4115
|
|
70
|
+
bead/config/logging.py,sha256=w1oAaNA8NoUuPC76pUSQcmn86owKj2KSEpfwjlXOL5A,1007
|
|
71
|
+
bead/config/model.py,sha256=g_aSzUBW2574q9Aik6dkaCdW9hn6txV5_2_HHM9iP-0,1428
|
|
72
|
+
bead/config/paths.py,sha256=3TAGNR4kiDrTs_NEkp7pzuh1vqgP4eoEu8-Lb03JwNg,1316
|
|
73
|
+
bead/config/profiles.py,sha256=1kRPRvQRyGcZtLFfTVj-c_dg8PJsKmWsWDa-jF0RhWs,8941
|
|
74
|
+
bead/config/resources.py,sha256=HyEHVI7weQFUVYjUh3L4ihfaYuBoVi2Pz7rua-d7SfA,1303
|
|
75
|
+
bead/config/serialization.py,sha256=XCrWcBcH2x3_FQbqNygC7hEspwF44cpyVpmQqtp8lrc,6180
|
|
76
|
+
bead/config/simulation.py,sha256=hwhreRcAMNcpBVfLxdn50gcKuWdSkS-rKW6icpjKMFg,6590
|
|
77
|
+
bead/config/template.py,sha256=yQvGK82cbi7u9NkUw17MJJsTfcqVN2L0y_zRnpcD3wQ,8281
|
|
78
|
+
bead/config/validation.py,sha256=5QzW0oZIJ88k6ABgGyw9JRgs37lSg54zG97VRPOT-OY,8171
|
|
79
|
+
bead/data/__init__.py,sha256=rqra1AWj-d02NXBj4W-xJVaSJsQ6348ksEVaPx-HYVQ,1568
|
|
80
|
+
bead/data/base.py,sha256=5yGGqXPoml3X-R6tcrO0nxFlM3qtwuHIguW6X8SH_MI,2844
|
|
81
|
+
bead/data/identifiers.py,sha256=ipyyyc98IDs9OzlHapyz8NGvaVkzid_lK-Z__m8wtDQ,2496
|
|
82
|
+
bead/data/language_codes.py,sha256=WRoVrTvhrAuN3FX5NTJ0faifFk2uI_Z4_SO1mvesxRE,1490
|
|
83
|
+
bead/data/metadata.py,sha256=IMj_erh3lUMbkCp-wSRNhq6M4cU027lRFAvYYkzzX6I,8709
|
|
84
|
+
bead/data/range.py,sha256=A1flVuWsn3UBXh0LGRu9UtsbbC1ZH2tX1nloJCh7nao,2807
|
|
85
|
+
bead/data/repository.py,sha256=lSU0QfQ3psmQ0Nva1kNQit4tffM5bAge-2OaGwdB-8A,10138
|
|
86
|
+
bead/data/serialization.py,sha256=cg7WAAXSaM0UxE3HBOqWZ7JJjguF0yVjhkyATbaZ4Nc,7446
|
|
87
|
+
bead/data/timestamps.py,sha256=UQAzygKQcaA2DQWgx6Tc2KPjiNws8yYdbpr-eW3QPoo,2127
|
|
88
|
+
bead/data/validation.py,sha256=6edgTEH85DUvW_StSQoeIN8FgM6d8Rii1eYXaywXdzg,10305
|
|
89
|
+
bead/data_collection/__init__.py,sha256=-1ljW1LRmYFaWWXy7PIgFj_i6HaojvVHx3uWew16TQc,322
|
|
90
|
+
bead/data_collection/jatos.py,sha256=1d-rj-Fb9aWH15NixW9L6G3k-nzBz9gyAtmEdJFNoCE,6237
|
|
91
|
+
bead/data_collection/merger.py,sha256=TzvbBuuqPutQJpKq8--cV-6tCHuNcIH1oxEcHEQjwio,4816
|
|
92
|
+
bead/data_collection/prolific.py,sha256=6nk0qinj-QR3ENUOqvdfhpm8DlJwTOfFBObjooJUOH0,5425
|
|
93
|
+
bead/deployment/__init__.py,sha256=wPMasj6FVVDfciJZWMWQ7mte2z6QJvqcLgQxjbvRUto,175
|
|
94
|
+
bead/deployment/distribution.py,sha256=v-ApQszy_H3708DpNid8w3I_2gOVibC5reIJhyiQYis,14324
|
|
95
|
+
bead/deployment/jatos/__init__.py,sha256=z6AeXsSaeBEkqjBecjVWrFXHuVMWSR2DIgXqgRXrSkg,69
|
|
96
|
+
bead/deployment/jatos/api.py,sha256=pug_diReyjDEpmlUwumdTWtnQP2_0g-iE82nsBWrCZw,5233
|
|
97
|
+
bead/deployment/jatos/exporter.py,sha256=znDLnMNGXuamcIXK4QzQg_AZPqZ7S7aXaBmvQPJ9wug,6422
|
|
98
|
+
bead/deployment/jspsych/__init__.py,sha256=3cB7ZizaBrESWjOaPvavNZ7CeR5lbzdRgpFZw3bNBcE,278
|
|
99
|
+
bead/deployment/jspsych/biome.json,sha256=8xwbG1-Y2A32-CMgfKvABHGUGzc087U_X5dkJILQIFQ,859
|
|
100
|
+
bead/deployment/jspsych/config.py,sha256=JsszI8-6hpDoLIY-YHtYKB2Hs0dOlzrKGtvkvIFKgn0,13456
|
|
101
|
+
bead/deployment/jspsych/generator.py,sha256=TC7-FVIu4EXkzk4RxPEhwdKjCr5UOWOZuSzPIcNyb2Q,22528
|
|
102
|
+
bead/deployment/jspsych/package.json,sha256=-gXJPLbAMgTofuFqxCQb3qmqQr6NSYUxixeKTJRy78g,1278
|
|
103
|
+
bead/deployment/jspsych/pnpm-lock.yaml,sha256=HSvXIEQS8E4JLequE07RptGcDbsR3OB_vDm5ua0pg-8,67152
|
|
104
|
+
bead/deployment/jspsych/randomizer.py,sha256=3gk1EL-8Xnz9l7n4Lgqv8SiQDC3kRA_G4h8Vata27E0,9670
|
|
105
|
+
bead/deployment/jspsych/trials.py,sha256=etS_ZMRVs1OY0S7J1W30eAs0M35e1nPPtgf1JKNOT9k,22855
|
|
106
|
+
bead/deployment/jspsych/tsconfig.json,sha256=sx-pTIxsPgJE7YwCv1F7S3uHIuctBqo5YAqcu6hsTfU,627
|
|
107
|
+
bead/deployment/jspsych/tsup.config.ts,sha256=mUziTNKlT-RKZP-YjCnLnUG5skFUUTazEYn3gExr9E8,861
|
|
108
|
+
bead/deployment/jspsych/src/lib/list-distributor.test.ts,sha256=sH0GeF1l9h0JgZeFkLR8s1GxBhwe60fsR9nLGvUIlJ8,10049
|
|
109
|
+
bead/deployment/jspsych/src/lib/list-distributor.ts,sha256=Bqlm5fW7sol63EO8oLgyJaV3X2m5rPpRjJPbNAPDdVk,38277
|
|
110
|
+
bead/deployment/jspsych/src/lib/randomizer.test.ts,sha256=IIxM3iO83C73H4wRJLMUqAcBrbh3ldPa6IFn5FBS878,6914
|
|
111
|
+
bead/deployment/jspsych/src/lib/randomizer.ts,sha256=ASvnqUA9kA3KSMe-JRM3xRyqgftFwqDlw88_1MYgLF4,9289
|
|
112
|
+
bead/deployment/jspsych/src/plugins/cloze-dropdown.ts,sha256=zLqNLUH4aC8sAtjvxYm9V-BwAz0hfltjQxRFdtgnHxM,7303
|
|
113
|
+
bead/deployment/jspsych/src/plugins/forced-choice.ts,sha256=DG8svExzJcKmIbbHH0T9Kf4o6jcjadHehwpkANkhZU4,7923
|
|
114
|
+
bead/deployment/jspsych/src/plugins/plugins.test.ts,sha256=8lvJZZQuNTfsd41snOzKNmipEj0200mNd-gKnVJEUPs,4842
|
|
115
|
+
bead/deployment/jspsych/src/plugins/rating.ts,sha256=pxbowQZxc7dyYcr054rxCJsH1U5YD857Kl0-2Fx1W0U,6844
|
|
116
|
+
bead/deployment/jspsych/src/slopit/index.ts,sha256=uvn9wqgFHUhXu4rCKQeGKmM9xGTk5NGzQqNocEO-ntY,251
|
|
117
|
+
bead/deployment/jspsych/src/types/jatos.d.ts,sha256=LIm60vJqsvCpVJstBlHvVHHy5N3QCVPINIE96R2FMU0,6000
|
|
118
|
+
bead/deployment/jspsych/src/types/jspsych.d.ts,sha256=5yEZIOYYdr3ZmN09KYzcTYUg9lZEZ6quHckR3f-Y_Vc,6274
|
|
119
|
+
bead/deployment/jspsych/templates/experiment.css,sha256=_-A-QDM9sx2KulCcnQZyToDRikrr2I6eHeqY77lXd68,60
|
|
120
|
+
bead/deployment/jspsych/templates/experiment.js.template,sha256=p3u3mqK4n9gmvwdDO6X8dYd3ni-Ifh3UteYqhH7zwG8,11007
|
|
121
|
+
bead/deployment/jspsych/templates/index.html,sha256=VLvfGkW05pi0iGR3SR4nEj1oiQY_x5H3g3aiPudLzo0,1830
|
|
122
|
+
bead/deployment/jspsych/templates/randomizer.js,sha256=tqe4GuNe9SnMln-NkdL9J20YrzAmgeS05xhVmURCW-8,7715
|
|
123
|
+
bead/deployment/jspsych/templates/randomizer.js.template,sha256=Ie07FBKG4H2c3Za9Gt8dXbbxG090KM_XDPHx-oKdIsI,9248
|
|
124
|
+
bead/deployment/jspsych/ui/__init__.py,sha256=jqnyYIw79KFA6AtiEfm0y-kWry8NONZC2WwRRFKEWcw,56
|
|
125
|
+
bead/deployment/jspsych/ui/components.py,sha256=81OZ0EK8bRfxw8Dlzyb6P8RW5hFgGofLt008-HHNv48,12536
|
|
126
|
+
bead/deployment/jspsych/ui/styles.py,sha256=UdzqvgW0ofJhBU1d7swyBAQcUqHiVuNqB_A_ogrhqxg,9249
|
|
127
|
+
bead/dsl/__init__.py,sha256=j_lVmA4qdeamroMx1kat-gRMFZO2NFqYpakMy0gD8_g,1865
|
|
128
|
+
bead/dsl/ast.py,sha256=nyGErdjvxe12zHwtF6RDni5dr2BxhjXsaMyQOMw1pFU,3399
|
|
129
|
+
bead/dsl/context.py,sha256=MLqp3PTfabnZmcgYi4HUH34xsyFhbDTRgfnDN3k8XOs,4734
|
|
130
|
+
bead/dsl/errors.py,sha256=Hn3gsCeqUvlDrtzccMZukrZtgIYT3qoB4CHajmf-koo,1775
|
|
131
|
+
bead/dsl/evaluator.py,sha256=M4aGSSk2dN8t_0BA0zlH4b7QuxftDauDJH1EJ7z1S2g,17800
|
|
132
|
+
bead/dsl/grammar.lark,sha256=9id6c5I90raJTa9Cq723mg3JP2I3fSmU8IQtouTdJd8,1878
|
|
133
|
+
bead/dsl/parser.py,sha256=0nq1_7cFZvnWKs4wERNOHqiKd_-UR9y6O3MQxf_j0q0,8509
|
|
134
|
+
bead/dsl/stdlib.py,sha256=oNwYVSEtO685Nibp3utACO0nS9C0CcAUZ8kmAj3yxXY,17607
|
|
135
|
+
bead/evaluation/__init__.py,sha256=B5uTpMzu8cBS4ELnyU1bm959ezi2NOYAGou3VfUp6r4,403
|
|
136
|
+
bead/evaluation/convergence.py,sha256=lPnIEIlCvMeG5iRd4RqmI9YVwi5RD6rAzBHq16ylFNM,17209
|
|
137
|
+
bead/evaluation/interannotator.py,sha256=RtZpI7lfInj_w0v0VzglEDUSEG0l2W0dimkfhiqF38A,13177
|
|
138
|
+
bead/items/__init__.py,sha256=qof3wAz4CKLLhsXstlx2cV867l51rO1g19NF4yk2pCE,803
|
|
139
|
+
bead/items/binary.py,sha256=5vVQRxSROU48-WNids3H-FcQSjWcsnjxeWd8o-W5WGI,15162
|
|
140
|
+
bead/items/cache.py,sha256=SdYcBlBvCzpLPmybRYUCwsq00klPtmX0b88_1WbQhfY,16348
|
|
141
|
+
bead/items/categorical.py,sha256=e-03NmvIvowtr953yKL2EauqkrJlvfI4LdRTVlqpKWE,17495
|
|
142
|
+
bead/items/cloze.py,sha256=vq-F6o-n7Y-nTcGfk_rowQwyXnAWcYFaaKjVZXe3Bvo,23671
|
|
143
|
+
bead/items/constructor.py,sha256=v4oNk9cOiEFkzZiGl1waO4mBWO6K1d8_8X-CjRXi0dU,28030
|
|
144
|
+
bead/items/forced_choice.py,sha256=SM8-Ji1-ZwMFPhmcQiNl3bHRE62pftoTwDd1dEoNCLk,12903
|
|
145
|
+
bead/items/free_text.py,sha256=IBCtKW-7axi9LX4HR3_eW7jURtYXgA6C1fcZ1a2iJIU,20046
|
|
146
|
+
bead/items/generation.py,sha256=oa8jSAcxms_SzFMbs61KlQyXlzWlXd3R4_ugtSAkeSs,14407
|
|
147
|
+
bead/items/item.py,sha256=ha1auobObjY2ETN1U2Tn7t8_Iu97PN_MmELuNdxgUDA,11894
|
|
148
|
+
bead/items/item_template.py,sha256=C1KzLhNp6q0MABjjcKG3ejYk14FwUD2Whw_nWeEM6aA,25737
|
|
149
|
+
bead/items/magnitude.py,sha256=hqx8_OzLJ30ecfCR_sPrVb_bDGR9ca4iWF8uxPdYz6g,16407
|
|
150
|
+
bead/items/multi_select.py,sha256=gI8hnSD5dxuSPrkskNGaOPANP_4HZNJOxDW46cqAJIc,20514
|
|
151
|
+
bead/items/ordinal_scale.py,sha256=USR0RiM76DJd-aMT_Q0NTIA96RlC1bu4qY_3rpFNVhQ,16740
|
|
152
|
+
bead/items/scoring.py,sha256=JuVv4j7DxfMULWvqcCHn93tINtaVtWxsaVHugAUtcZU,14379
|
|
153
|
+
bead/items/validation.py,sha256=IGz9ydXZ7Ea9DqcK3RVgViITF7XZpZA26dtVMdQLsNc,24989
|
|
154
|
+
bead/items/adapters/__init__.py,sha256=zXqaXWCqI8WJ_bpNcx5od5ghqkMtS-7nWNeUcjBfhRA,1775
|
|
155
|
+
bead/items/adapters/anthropic.py,sha256=yMeewn81_iemjsNqp-kvjawJuFYhlG7b60negidr1Lw,7166
|
|
156
|
+
bead/items/adapters/api_utils.py,sha256=JIA57Dnl-nF0kr8BMaT40j0jsIVKN8-l0jvFlpJzlHI,5115
|
|
157
|
+
bead/items/adapters/base.py,sha256=CQd0-fau__TAe1_YXRPggO76AcVLkST3G4-hJJMLc-8,5939
|
|
158
|
+
bead/items/adapters/google.py,sha256=6OgeuIDdKWFpdMJX6J8DuHYttyWQ-mztLi5e2r3zUnM,8036
|
|
159
|
+
bead/items/adapters/huggingface.py,sha256=3bcv2yHsvl1iuAC4m8PaE59PFzZHpRC_3Z-Zg8UALTE,35652
|
|
160
|
+
bead/items/adapters/openai.py,sha256=rGEy42-1LEYC-WW65qL4OuaWt5i6SU8p0mFbqC-mtDQ,9868
|
|
161
|
+
bead/items/adapters/registry.py,sha256=aXTVwk3R-ZKZ77YIO8ZUxG3LkpOcqKPFK7rnu3Dlo6k,6053
|
|
162
|
+
bead/items/adapters/sentence_transformers.py,sha256=YfWIyOZ9ytXQklGC-bQMs0j91zLWHVpVzCBp_Yxje5o,6957
|
|
163
|
+
bead/items/adapters/togetherai.py,sha256=SsmhOvkpxifq-KqasujDJRLwahVeLKG8wWu3yRBrG1M,9791
|
|
164
|
+
bead/lists/__init__.py,sha256=Fcw0LLpCrxfcWAhDjsAsSHy27Jf8U8UCSGoINNrb0Ek,845
|
|
165
|
+
bead/lists/balancer.py,sha256=fZ57y98ci8PiAfvrfEhdQE8wVbRoX1kD_K2Ib-cQKBA,9189
|
|
166
|
+
bead/lists/constraints.py,sha256=BloqZOiv6qu4gmFkPco9oaDjUq91yX_DZawTqSYcPpU,38855
|
|
167
|
+
bead/lists/experiment_list.py,sha256=edL197blkCi2ht9nqPwulNvume6QTa0pdZx_havKfwM,8734
|
|
168
|
+
bead/lists/list_collection.py,sha256=wZ5Oa2JIzdHjleZa_zlGcrFV0c1x953jYZTEhlbe0E8,11745
|
|
169
|
+
bead/lists/partitioner.py,sha256=MfsiWZ_IWUo8pP5Rou0fzCmfFQCwtUXTm9xi8n3Mifs,36287
|
|
170
|
+
bead/lists/stratification.py,sha256=ApAbFlkmfTP6nACwNeCZcBkdAm5vNlWlWDnnfhRLpLs,8323
|
|
171
|
+
bead/participants/__init__.py,sha256=a3yuRWDqjmL143TvSPyZbmeTXnNmqysZv5hpwO-rWM8,2217
|
|
172
|
+
bead/participants/collection.py,sha256=-LII_0nBqLjtjI3YAANonAhyAFwzavhaoMhrxk45ztg,21272
|
|
173
|
+
bead/participants/merging.py,sha256=VyoRPmGKM8soea2a5zHlqwsWiHWQ4u_mCj1yp24cjmc,9660
|
|
174
|
+
bead/participants/metadata_spec.py,sha256=wuFYvzR5uj1J8iwGm19FqDypOwB8_sycVLhD8jCNDRc,15225
|
|
175
|
+
bead/participants/models.py,sha256=rBJNKwd0VP-M9MGUnkYUu_70RFQM1DltHqK0an21-vU,8640
|
|
176
|
+
bead/resources/__init__.py,sha256=N-3ElrHhOR2UfWVx75LIdUuTuhBwwkpan1ij_OxbMRw,765
|
|
177
|
+
bead/resources/classification.py,sha256=70HwJQ4gzjpLHTjd1nbFxcCz_wLMemqOIjUTPC6RQX8,25993
|
|
178
|
+
bead/resources/constraint_builders.py,sha256=_KibTfJVpauYCiW5ap0jGKze69VLC0YavbQmqM2U3SA,11046
|
|
179
|
+
bead/resources/constraints.py,sha256=hgkItJx9IoS9aKBrqXlwihVCAQ-q4Dymekyes05O82E,5502
|
|
180
|
+
bead/resources/lexical_item.py,sha256=ajx_NkNqQ4xly32a3E0Gt-LMYi-dZv410UShjdd9aNk,6941
|
|
181
|
+
bead/resources/lexicon.py,sha256=0QzRlPq2ffAPrVS6kSXJLPlb9cnnM7cmmImylQHNOnw,22139
|
|
182
|
+
bead/resources/loaders.py,sha256=yqsPc_jHxe0zjB7Vtwd863FYRgKNbo0UjWSn7kl_HPQ,6018
|
|
183
|
+
bead/resources/template.py,sha256=f421OX-hNFVDgraEJnNhbQXgqu0bNw_pJs2Ej_gPQrQ,12903
|
|
184
|
+
bead/resources/template_collection.py,sha256=r4ABfCz7mgfOQ4C3HmzKfe9QaYw8xrhY_179QTKmOZ4,21837
|
|
185
|
+
bead/resources/template_generation.py,sha256=tsxNMarRlx37_cvZIhayESFkxD9o3fLHtsx6x8xjs2w,10419
|
|
186
|
+
bead/resources/adapters/__init__.py,sha256=92NQ08WSZWNDERt4YDFFjoQEvgYv8bvjLL51CVbOrqc,589
|
|
187
|
+
bead/resources/adapters/base.py,sha256=9MC1DwdUlFHSLp9cIUtMnnaCNyFRpbcBOwLrAqGl85Y,3430
|
|
188
|
+
bead/resources/adapters/cache.py,sha256=HGkYYcedv6VOgNZWgzrjtvmzWyjG5DIN-UhmMGUGSn4,3542
|
|
189
|
+
bead/resources/adapters/glazing.py,sha256=Kmbr_VZk-8o1R3TLU_VTjfpfmE4lI0cwcGsB8w4XTIw,17378
|
|
190
|
+
bead/resources/adapters/registry.py,sha256=TyUPlNvfIWSEL-c8C_NbnUAqyaCm4Tus7vT8CvaY2bE,3638
|
|
191
|
+
bead/resources/adapters/unimorph.py,sha256=xq-9SSMv1y0trXaxuvg1kYHCs9Xy2UC4A_8F8oGozEE,21454
|
|
192
|
+
bead/simulation/__init__.py,sha256=rp5LP4G0Uq1vvA_VRXqtAvxpjJPEFz-dIJb4RL1fbAg,1107
|
|
193
|
+
bead/simulation/runner.py,sha256=JdwERuMTziHl8sSYJDgWFdN7WEaGuxVwqlBD0VuJE5I,4746
|
|
194
|
+
bead/simulation/annotators/__init__.py,sha256=w4hqZoeDo05nXTK_7reoWuCANtwL880pphpOuYVFOIQ,534
|
|
195
|
+
bead/simulation/annotators/base.py,sha256=YWLPK0LuZCAwR4BbJpASZWD0xGkkhgv_3Go9Cr1RmLI,5520
|
|
196
|
+
bead/simulation/annotators/distance_based.py,sha256=-bJBeQpiO10KEAZkl6HetaWcRN_4KoL-Pne5MUC010E,4836
|
|
197
|
+
bead/simulation/annotators/lm_based.py,sha256=wmzXvDDhPQDuQd1ZLC5vmMMaMayCt_A0mdZtJ5lUKmg,3927
|
|
198
|
+
bead/simulation/annotators/oracle.py,sha256=ovyJfQi2amfra9X8GccfEYKkbRYVf8yxcsLq6Y3JQAg,6745
|
|
199
|
+
bead/simulation/annotators/random.py,sha256=q3VMQmNXhWB7cvwYzpUbMnvujWX1cvCL4w2ARK9CUpA,5646
|
|
200
|
+
bead/simulation/dsl_extension/__init__.py,sha256=p5F-hCWXulibMtxwj5EM-BIlLamWvJ3RrNgOlgBekhQ,71
|
|
201
|
+
bead/simulation/noise_models/__init__.py,sha256=nd4R2Is8BX2WUdbMLVhj2QQHenQnETY1J7UdhIxyzL0,444
|
|
202
|
+
bead/simulation/noise_models/base.py,sha256=cQdibMZtaRw5uyFVEBkO41a8udLphfDM910iY0y4iPs,1152
|
|
203
|
+
bead/simulation/noise_models/random_noise.py,sha256=8DfdarL7Q9VRqMfO1L2-W-Q3Ct56V0oKllpYqb5wOF0,2435
|
|
204
|
+
bead/simulation/noise_models/systematic.py,sha256=JJ5ERiV1cs1FRWLbrhTlMlrXENcTqprYhZmeNnmMps8,4055
|
|
205
|
+
bead/simulation/noise_models/temperature.py,sha256=exDRTzC5Xz_j2SajFL1_2FJbh-aLP-CeKKmYGc83F-E,2692
|
|
206
|
+
bead/simulation/strategies/__init__.py,sha256=Yn45hrT1v4pwb3byhGiIsTYcC2T_fYMEmeJtzMWhPUc,894
|
|
207
|
+
bead/simulation/strategies/base.py,sha256=pG3VJTJ5bJZDA8_M7W1lHfi39kEW3ByzNdhnsHuB6ko,3472
|
|
208
|
+
bead/simulation/strategies/binary.py,sha256=Gd3WPRF9O0lrTgqnf3kZSoDmNg_FFvV6_PpNx2wiElg,2699
|
|
209
|
+
bead/simulation/strategies/categorical.py,sha256=5jnyhyD5JLPfOFAVZc66c3aPTntJ0v3pjoM1DIg4Bdc,3482
|
|
210
|
+
bead/simulation/strategies/cloze.py,sha256=4pQjjNHFd_oP9aOr2EMdPys7GgE0Hpk9p-7PDK6c1MA,7361
|
|
211
|
+
bead/simulation/strategies/forced_choice.py,sha256=mZjEjxGQLq374YM6NelKOpgKZRekoW-P0I2k8Zcpf8k,3621
|
|
212
|
+
bead/simulation/strategies/free_text.py,sha256=w4F3UP60XJmDcAlPFg8OHxHbkOpIWXEB3Xrq0AlBtTY,3027
|
|
213
|
+
bead/simulation/strategies/magnitude.py,sha256=l7-SbXZbpSQJ5wO_2wlji77sWModRMNTLmhhMvokwj4,3298
|
|
214
|
+
bead/simulation/strategies/multi_select.py,sha256=CWhEpH9mpZDu6x6j4M-A41oobZuFIUxnaKp9bvQLsbk,3812
|
|
215
|
+
bead/simulation/strategies/ordinal_scale.py,sha256=KbzU2zdB3i_lTnVZNT6xnWpn2nHbhUzHfFpshBqB9g8,3825
|
|
216
|
+
bead/templates/__init__.py,sha256=Xj9sZGIZOJAdRNCEDWllknsWVwUua1o4JhyAAivcQZk,676
|
|
217
|
+
bead/templates/combinatorics.py,sha256=68cMhgM9IcLsAe5RmAsVvTv3XZ4pfe8_-zwW1LCnFBM,2509
|
|
218
|
+
bead/templates/filler.py,sha256=JT7prFmvFw-JLFZEZOXUQgObY2yfF0MczcEBQsXInms,20632
|
|
219
|
+
bead/templates/renderers.py,sha256=tEra7D9aGDUd9paXIT8H-6BtzifrGTZ6Zr7Sb1irCKw,6249
|
|
220
|
+
bead/templates/resolver.py,sha256=hh0_4pPa9coi2EPibOm4gEIEMAEUQ2fzDxi-VldXtv4,5943
|
|
221
|
+
bead/templates/strategies.py,sha256=x0loHNNI0-MIWgUEq9As7HM3WD9FueasCNxS3ZvlPy0,64155
|
|
222
|
+
bead/templates/streaming.py,sha256=Au6v5Umalo-JVpYLRaaq4v5RjXDJ_2ra17obayunOGU,6351
|
|
223
|
+
bead/templates/adapters/__init__.py,sha256=kS4xphWWpWaG4kx6PvnU5qsfQRaNXzqX4XKJv3RCLUA,503
|
|
224
|
+
bead/templates/adapters/base.py,sha256=rwe-3Wmv7EhuDCUe-RUWPUvJ1j6kcFN4E9BDz_nLPxw,3397
|
|
225
|
+
bead/templates/adapters/cache.py,sha256=EeHj9GBT7Bi6mV6r2Iu6pw0Se53MitnMOjs1gkWI1Rc,4721
|
|
226
|
+
bead/templates/adapters/huggingface.py,sha256=EuK7fHpAY017Vb6yjqRa5GbgSHPQg1FUX4TwN0_iYYE,9651
|
|
227
|
+
bead-0.1.0.dist-info/METADATA,sha256=dCL6Mir4yZkxjAdtTle6hLTCGToGddDRHWQ5UA_1YbU,7852
|
|
228
|
+
bead-0.1.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
229
|
+
bead-0.1.0.dist-info/entry_points.txt,sha256=Ry1_jPeng5T_UsR2laA42vbGWkaPfWDg9ScjEYYb9T8,43
|
|
230
|
+
bead-0.1.0.dist-info/licenses/LICENSE,sha256=l3rW8IBkFW7RCc481r6YNSCQCXQFg171lfLgi91Dtp8,1075
|
|
231
|
+
bead-0.1.0.dist-info/RECORD,,
|