dasein-core 0.2.7__py3-none-any.whl → 0.2.10__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. dasein/api.py +1144 -133
  2. dasein/capture.py +2325 -1803
  3. dasein/microturn.py +475 -0
  4. dasein/models/en_core_web_sm/en_core_web_sm/__init__.py +10 -0
  5. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/LICENSE +19 -0
  6. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/LICENSES_SOURCES +66 -0
  7. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/README.md +47 -0
  8. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/accuracy.json +330 -0
  9. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/attribute_ruler/patterns +0 -0
  10. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/config.cfg +269 -0
  11. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/lemmatizer/lookups/lookups.bin +1 -0
  12. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/meta.json +521 -0
  13. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/ner/cfg +13 -0
  14. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/ner/model +0 -0
  15. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/ner/moves +1 -0
  16. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/parser/cfg +13 -0
  17. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/parser/model +0 -0
  18. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/parser/moves +1 -0
  19. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/senter/cfg +3 -0
  20. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/senter/model +0 -0
  21. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/tagger/cfg +57 -0
  22. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/tagger/model +0 -0
  23. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/tok2vec/cfg +3 -0
  24. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/tok2vec/model +0 -0
  25. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/tokenizer +3 -0
  26. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/vocab/key2row +1 -0
  27. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/vocab/lookups.bin +0 -0
  28. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/vocab/strings.json +84782 -0
  29. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/vocab/vectors +0 -0
  30. dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/vocab/vectors.cfg +3 -0
  31. dasein/models/en_core_web_sm/en_core_web_sm/meta.json +521 -0
  32. dasein/models/en_core_web_sm/en_core_web_sm-3.7.1.dist-info/LICENSE +19 -0
  33. dasein/models/en_core_web_sm/en_core_web_sm-3.7.1.dist-info/LICENSES_SOURCES +66 -0
  34. dasein/models/en_core_web_sm/en_core_web_sm-3.7.1.dist-info/METADATA +59 -0
  35. dasein/models/en_core_web_sm/en_core_web_sm-3.7.1.dist-info/RECORD +35 -0
  36. dasein/models/en_core_web_sm/en_core_web_sm-3.7.1.dist-info/WHEEL +5 -0
  37. dasein/models/en_core_web_sm/en_core_web_sm-3.7.1.dist-info/entry_points.txt +2 -0
  38. dasein/models/en_core_web_sm/en_core_web_sm-3.7.1.dist-info/top_level.txt +1 -0
  39. dasein/pipecleaner.py +1917 -0
  40. dasein/wrappers.py +315 -0
  41. {dasein_core-0.2.7.dist-info → dasein_core-0.2.10.dist-info}/METADATA +4 -1
  42. dasein_core-0.2.10.dist-info/RECORD +59 -0
  43. dasein_core-0.2.7.dist-info/RECORD +0 -21
  44. {dasein_core-0.2.7.dist-info → dasein_core-0.2.10.dist-info}/WHEEL +0 -0
  45. {dasein_core-0.2.7.dist-info → dasein_core-0.2.10.dist-info}/licenses/LICENSE +0 -0
  46. {dasein_core-0.2.7.dist-info → dasein_core-0.2.10.dist-info}/top_level.txt +0 -0
dasein/wrappers.py ADDED
@@ -0,0 +1,315 @@
1
+ """
2
+ Monkey-patching wrappers for LLMs and Tools.
3
+
4
+ This module contains the monkey-patch logic for intercepting:
5
+ 1. LLM calls (for microturn enforcement)
6
+ 2. Tool calls (for pipecleaner deduplication)
7
+ """
8
+
9
+ import threading
10
+ import time
11
+ from typing import Any, Optional
12
+
13
+ # Thread-local storage for callback handler (injected at runtime)
14
+ _tool_context = threading.local()
15
+
16
+
17
+ def set_pipecleaner_context(callback_handler: Any):
18
+ """
19
+ Inject callback handler into thread-local storage.
20
+ Called from CognateProxy.__init__ after handler is created.
21
+ """
22
+ _tool_context.callback_handler = callback_handler
23
+
24
+
25
+ def get_pipecleaner_context():
26
+ """Get callback handler from thread-local storage."""
27
+ return getattr(_tool_context, 'callback_handler', None)
28
+
29
+
30
+ def wrap_tools_for_pipecleaner(agent: Any, callback_handler: Any, verbose: bool = False) -> bool:
31
+ """
32
+ DISABLED: This function has been disabled to avoid interfering with tool execution.
33
+ """
34
+ print(f"[WRAPPERS DISABLED] wrap_tools_for_pipecleaner called but DISABLED - no patching will occur")
35
+ return False # Return False to indicate nothing was done
36
+
37
+ # ORIGINAL CODE BELOW - COMPLETELY DISABLED
38
+ if False:
39
+ pass
40
+ try:
41
+ import importlib
42
+
43
+ if verbose:
44
+ print(f"[DASEIN][TOOL_WRAPPER] 🔍 Instrumenting tool wrappers...")
45
+
46
+ patched_count = 0
47
+
48
+ # ===== [HP2] ToolNode._run_one/_arun_one =====
49
+ try:
50
+ from langgraph.prebuilt.tool_node import ToolNode
51
+
52
+ if hasattr(ToolNode, '_arun_one'):
53
+ original_arun_one = ToolNode._arun_one
54
+
55
+ async def patched_arun_one(self, call, config):
56
+ tool_name = call.get('name', 'unknown') if isinstance(call, dict) else getattr(call, 'name', 'unknown')
57
+ result = await original_arun_one(self, call, config)
58
+ # Apply pipecleaner
59
+ result = _apply_pipecleaner_to_result(tool_name, result, callback_handler)
60
+ return result
61
+
62
+ ToolNode._arun_one = patched_arun_one
63
+ if verbose:
64
+ print(f"[DASEIN][TOOL_WRAPPER] ✅ Patched ToolNode._arun_one")
65
+ patched_count += 1
66
+
67
+ if hasattr(ToolNode, '_run_one'):
68
+ original_run_one = ToolNode._run_one
69
+
70
+ def patched_run_one(self, call, config):
71
+ tool_name = call.get('name', 'unknown') if isinstance(call, dict) else getattr(call, 'name', 'unknown')
72
+ result = original_run_one(self, call, config)
73
+ result = _apply_pipecleaner_to_result(tool_name, result, callback_handler)
74
+ return result
75
+
76
+ ToolNode._run_one = patched_run_one
77
+ if verbose:
78
+ print(f"[DASEIN][TOOL_WRAPPER] ✅ Patched ToolNode._run_one")
79
+ patched_count += 1
80
+ except ImportError:
81
+ if verbose:
82
+ print(f"[DASEIN][TOOL_WRAPPER] ⚠️ ToolNode not available")
83
+
84
+ # ===== BaseTool._run/_arun (ACTUAL EXECUTION, not wrapper) =====
85
+ try:
86
+ from langchain_core.tools.base import BaseTool
87
+
88
+ # Patch _arun (the actual async execution method)
89
+ if hasattr(BaseTool, '_arun'):
90
+ original_arun = BaseTool._arun
91
+
92
+ async def patched_arun(self, *args, **kwargs):
93
+ tool_name = getattr(self, 'name', 'unknown')
94
+ result = await original_arun(self, *args, **kwargs)
95
+ handler = get_pipecleaner_context()
96
+ cleaned_result = _apply_pipecleaner_to_result(tool_name, result, handler)
97
+ return cleaned_result
98
+
99
+ BaseTool._arun = patched_arun
100
+ if verbose:
101
+ print(f"[DASEIN][TOOL_WRAPPER] ✅ Patched BaseTool._arun")
102
+ patched_count += 1
103
+
104
+ # Patch _run (sync version)
105
+ if hasattr(BaseTool, '_run'):
106
+ original_run = BaseTool._run
107
+
108
+ def patched_run(self, *args, **kwargs):
109
+ tool_name = getattr(self, 'name', 'unknown')
110
+ result = original_run(self, *args, **kwargs)
111
+ handler = get_pipecleaner_context()
112
+ cleaned_result = _apply_pipecleaner_to_result(tool_name, result, handler)
113
+ return cleaned_result
114
+
115
+ BaseTool._run = patched_run
116
+ if verbose:
117
+ print(f"[DASEIN][TOOL_WRAPPER] ✅ Patched BaseTool._run")
118
+ patched_count += 1
119
+
120
+ # ALSO patch ainvoke/invoke as backup
121
+ if hasattr(BaseTool, 'ainvoke'):
122
+ original_ainvoke = BaseTool.ainvoke
123
+
124
+ async def patched_ainvoke(self, *args, **kwargs):
125
+ tool_name = getattr(self, 'name', 'unknown')
126
+ result = await original_ainvoke(self, *args, **kwargs)
127
+ handler = get_pipecleaner_context()
128
+ cleaned_result = _apply_pipecleaner_to_result(tool_name, result, handler)
129
+
130
+ if cleaned_result != result:
131
+ print(f"[🧹 CLEANED] Tool '{tool_name}' | {len(str(result))} → {len(str(cleaned_result))} chars")
132
+
133
+ return cleaned_result
134
+
135
+ BaseTool.ainvoke = patched_ainvoke
136
+ if verbose:
137
+ print(f"[DASEIN][TOOL_WRAPPER] ✅ Patched BaseTool.ainvoke")
138
+ patched_count += 1
139
+
140
+ if hasattr(BaseTool, 'invoke'):
141
+ original_invoke = BaseTool.invoke
142
+
143
+ def patched_invoke(self, *args, **kwargs):
144
+ tool_name = getattr(self, 'name', 'unknown')
145
+ result = original_invoke(self, *args, **kwargs)
146
+ handler = get_pipecleaner_context()
147
+ cleaned_result = _apply_pipecleaner_to_result(tool_name, result, handler)
148
+
149
+ if cleaned_result != result:
150
+ print(f"[🧹 CLEANED] Tool '{tool_name}' | {len(str(result))} → {len(str(cleaned_result))} chars")
151
+
152
+ return cleaned_result
153
+
154
+ BaseTool.invoke = patched_invoke
155
+ if verbose:
156
+ print(f"[DASEIN][TOOL_WRAPPER] ✅ Patched BaseTool.invoke")
157
+ patched_count += 1
158
+ except ImportError:
159
+ if verbose:
160
+ print(f"[DASEIN][TOOL_WRAPPER] ⚠️ BaseTool not available")
161
+
162
+ # ===== ToolMessage creation (catches streaming results) =====
163
+ try:
164
+ from langchain_core.messages import ToolMessage
165
+
166
+ if hasattr(ToolMessage, '__init__'):
167
+ original_init = ToolMessage.__init__
168
+
169
+ def patched_init(self, content, **kwargs):
170
+ # Get tool name from kwargs if available
171
+ name = kwargs.get('name', 'unknown')
172
+
173
+ # Apply pipecleaner to content before message is created
174
+ handler = get_pipecleaner_context()
175
+ if handler and isinstance(content, str):
176
+ cleaned_content = _apply_pipecleaner_to_result(name, content, handler)
177
+ if cleaned_content != content:
178
+ print(f"[🧹 CLEANED] ToolMessage '{name}' | {len(str(content))} → {len(str(cleaned_content))} chars")
179
+ content = cleaned_content
180
+
181
+ # Call original with potentially cleaned content
182
+ original_init(self, content, **kwargs)
183
+
184
+ ToolMessage.__init__ = patched_init
185
+ if verbose:
186
+ print(f"[DASEIN][TOOL_WRAPPER] ✅ Patched ToolMessage.__init__")
187
+ patched_count += 1
188
+ except ImportError:
189
+ if verbose:
190
+ print(f"[DASEIN][TOOL_WRAPPER] ⚠️ ToolMessage not available")
191
+
192
+ if verbose:
193
+ print(f"[DASEIN][TOOL_WRAPPER] ✅ Instrumentation complete: {patched_count} seams wrapped")
194
+ return patched_count > 0
195
+
196
+ except Exception as e:
197
+ print(f"[DASEIN][TOOL_WRAPPER] Error patching: {e}")
198
+ import traceback
199
+ traceback.print_exc()
200
+ return False
201
+
202
+
203
+ def _extract_text_from_search_result(result: Any, tool_name: str) -> str:
204
+ """
205
+ Extract full text content from structured search results.
206
+
207
+ Handles multiple search tool formats:
208
+ - Tavily: list of dicts with 'content', 'url', 'title'
209
+ - Serper: dict with 'organic' results
210
+ - DuckDuckGo: list of dicts with 'body', 'title'
211
+ - Raw strings: pass through
212
+ """
213
+ # If already a string, return as-is
214
+ if isinstance(result, str):
215
+ return result
216
+
217
+ extracted_parts = []
218
+
219
+ # Tavily format: list of result dicts
220
+ if isinstance(result, list):
221
+ print(f"[PIPECLEANER] Extracting from list of {len(result)} search results")
222
+ for i, item in enumerate(result, 1):
223
+ if isinstance(item, dict):
224
+ # Extract all text fields
225
+ title = item.get('title', '')
226
+ url = item.get('url', '')
227
+ content = item.get('content', '') or item.get('body', '') or item.get('snippet', '')
228
+
229
+ if title or content:
230
+ extracted_parts.append(f"--- SOURCE {i}: {title} ---")
231
+ if url:
232
+ extracted_parts.append(f"URL: {url}")
233
+ if content:
234
+ extracted_parts.append(content)
235
+ extracted_parts.append("") # Blank line separator
236
+
237
+ # Serper/dict format with 'organic' or 'results'
238
+ elif isinstance(result, dict):
239
+ organic = result.get('organic', []) or result.get('results', [])
240
+ if organic:
241
+ print(f"[PIPECLEANER] Extracting from dict with {len(organic)} organic results")
242
+ for i, item in enumerate(organic, 1):
243
+ title = item.get('title', '')
244
+ url = item.get('link', '') or item.get('url', '')
245
+ snippet = item.get('snippet', '') or item.get('content', '')
246
+
247
+ if title or snippet:
248
+ extracted_parts.append(f"--- SOURCE {i}: {title} ---")
249
+ if url:
250
+ extracted_parts.append(f"URL: {url}")
251
+ if snippet:
252
+ extracted_parts.append(snippet)
253
+ extracted_parts.append("")
254
+ else:
255
+ # Dict without known structure, try to extract any text
256
+ for key, value in result.items():
257
+ if isinstance(value, str) and len(value) > 20:
258
+ extracted_parts.append(f"{key}: {value}")
259
+
260
+ # Fallback: convert to string (but log warning)
261
+ if not extracted_parts:
262
+ result_str = str(result)
263
+ print(f"[PIPECLEANER] ⚠️ Unknown result format, using str() - may be truncated")
264
+ print(f"[PIPECLEANER] Result type: {type(result).__name__}")
265
+ return result_str
266
+
267
+ full_text = "\n".join(extracted_parts)
268
+ print(f"[PIPECLEANER] ✅ Extracted {len(full_text)} chars from {len(extracted_parts)} parts")
269
+ return full_text
270
+
271
+
272
+ def _apply_pipecleaner_to_result(tool_name: str, result: Any, callback_handler: Any) -> Any:
273
+ """
274
+ Apply pipecleaner deduplication to a tool result.
275
+
276
+ Called from patched tool execution methods.
277
+ """
278
+ try:
279
+ # Check if we have filter rules
280
+ if not callback_handler or not hasattr(callback_handler, '_selected_rules'):
281
+ return result
282
+
283
+ # Extract text from structured result (handles Tavily, Serper, etc.)
284
+ result_str = _extract_text_from_search_result(result, tool_name)
285
+
286
+ # Apply pipecleaner
287
+ from .pipecleaner import apply_pipecleaner_if_applicable
288
+
289
+ # Get cached model
290
+ cached_model = getattr(callback_handler, '_pipecleaner_embedding_model', None)
291
+
292
+ # Apply deduplication
293
+ deduplicated_str, model = apply_pipecleaner_if_applicable(
294
+ tool_name=tool_name,
295
+ output_str=result_str,
296
+ selected_rules=callback_handler._selected_rules,
297
+ cached_model=cached_model
298
+ )
299
+
300
+ # Cache model
301
+ if model is not None:
302
+ callback_handler._pipecleaner_embedding_model = model
303
+
304
+ # Return deduplicated result (as same type as original if possible)
305
+ if deduplicated_str != result_str:
306
+ print(f"[PIPECLEANER] ✅ Deduplicated: {len(result_str)} → {len(deduplicated_str)} chars")
307
+ return deduplicated_str
308
+
309
+ return result
310
+
311
+ except Exception as e:
312
+ print(f"[PIPECLEANER] Error applying pipecleaner: {e}")
313
+ import traceback
314
+ traceback.print_exc()
315
+ return result
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dasein-core
3
- Version: 0.2.7
3
+ Version: 0.2.10
4
4
  Summary: Universal memory for agentic AI. Attach a brain to any LangChain/LangGraph agent in a single line.
5
5
  Author-email: Dasein Team <support@dasein.ai>
6
6
  License: MIT
@@ -30,6 +30,9 @@ Requires-Dist: sqlalchemy>=2.0
30
30
  Requires-Dist: tabulate>=0.9.0
31
31
  Requires-Dist: python-dotenv>=1.0
32
32
  Requires-Dist: requests<2.35.0,>=2.31.0
33
+ Requires-Dist: numpy>=1.24.0
34
+ Requires-Dist: sentence-transformers>=2.2.0
35
+ Requires-Dist: spacy>=3.5.0
33
36
  Provides-Extra: dev
34
37
  Requires-Dist: pytest>=7.0; extra == "dev"
35
38
  Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
@@ -0,0 +1,59 @@
1
+ dasein/__init__.py,sha256=RY0lhaaWB6yJ_5YMRmaHDvQ0eFbc0BGbYNe5OVyxzYE,2316
2
+ dasein/advice_format.py,sha256=5-h4J24L_B2Y9dlmyDuIYtmPCWOGAYoinBEXqpcNg2s,5386
3
+ dasein/api.py,sha256=tQ4OtvWRG6rzYuXPKRj6DkcgIOM0kg3L1xNjOTYBf1Q,247127
4
+ dasein/capture.py,sha256=D4DvknI2wbmVup5WqvNcgw-zW5riEstYG81Rl98uz6o,110942
5
+ dasein/config.py,sha256=lXO8JG4RXbodn3gT5yEnuB0VRwWdrRVwhX3Rm06IZmU,1957
6
+ dasein/events.py,sha256=mG-lnOvQoZUhXbrPSjrG4RME6ywUcbSZ04PscoJ15GI,12896
7
+ dasein/extractors.py,sha256=fUFBVH9u2x4cJaM-8Zw4qiIpBF2LvjcdYkMvoXQUpL8,3986
8
+ dasein/injection_strategies.py,sha256=JBAvLnJK4xKqK4D1ZQnklIy-yIKSvWuvm2x0YGDMZVU,6507
9
+ dasein/injector.py,sha256=EItWhlG6oMAf_D7YJnRNyDwAQIK5MsaATu1ig3OENqM,7256
10
+ dasein/microturn.py,sha256=raFDQquEPFu5wxYPv9od0Nli9tdV55kXRn7Mvk1pyso,19081
11
+ dasein/pipecleaner.py,sha256=Rgw-gJ6NP2k4K7hNt_Lg0Bvs1BOdr4Cf6wFCXdtM0DU,78872
12
+ dasein/trace_buffer.py,sha256=bIyTpU8ZrNFR_TCwS43HvzUrDHpZ2F8pLVDeUE9jpwM,4117
13
+ dasein/types.py,sha256=FjGXZowiRYZzWj5GzSnAnA_-xwYqqE7WmXFCosVyGI8,2974
14
+ dasein/wrappers.py,sha256=YY7Iht-0xhuMKH3bPnUerlaIyCXhHN0dgXKkEyj9OsA,13389
15
+ dasein/models/en_core_web_sm/en_core_web_sm/__init__.py,sha256=yOtXB5wD_EFXwif2QXgfvLPp0RQ5q-G_C3LkwPp4o40,237
16
+ dasein/models/en_core_web_sm/en_core_web_sm/meta.json,sha256=X8R1--W7Axckn9flHCLVMFI0W7I_E-rxSf9ZAiOWTRw,10085
17
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/LICENSE,sha256=OTPBdpebaLxtC8yQLH1sEw8dEn9Hbxe6XNuo2Zz9ABI,1056
18
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/LICENSES_SOURCES,sha256=INnfrNIVESJR8VNB7dGkex-Yvzk6IS8Q8ZT_3H7pipA,2347
19
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/README.md,sha256=GiKC2MD8N5ujf8bnNJLGBW8xoNCoZndnru2HdorqDd8,2587
20
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/accuracy.json,sha256=bO55Bo7GZVz5xo4s2KodP1ZI04LRaqQ_aym1-CumEsQ,6320
21
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/config.cfg,sha256=ZcVFyi2lvUuHsi1JFzGGBTYLN97m7WsYUWoDb4cxn3k,5527
22
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/meta.json,sha256=X8R1--W7Axckn9flHCLVMFI0W7I_E-rxSf9ZAiOWTRw,10085
23
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/tokenizer,sha256=sBTou6SVixIK8tDBxj6rt8ADefK6yvEN98UyXv0upGc,77066
24
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/attribute_ruler/patterns,sha256=-Ll_fr75uFNrul8Pwec69hg1Y-luIyW8uwIbjG28ZoM,14735
25
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/lemmatizer/lookups/lookups.bin,sha256=62T0DA-DltF2JzDA3fTa0qUtE49aOJ9xoaHQiBc7dzc,972893
26
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/ner/cfg,sha256=pxcu2tr7qfRy6awPJmDuwEtkBeRxvp4gJnt5xnKI0i0,221
27
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/ner/model,sha256=b0fKBi60Gcj_t9MCPm-8Sy6yHasUxdSapeVYYii4dAU,6154601
28
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/ner/moves,sha256=2CsTRz69M-A5YATdIvAMcf48ElF0K_H3xFVPI_07CvQ,1064
29
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/parser/cfg,sha256=4qJA7wH5Xlj13UydbpDWH1l7jZmJZlcNMAndgeiHl4A,222
30
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/parser/model,sha256=oYNvvAKzkksv1fZTJcWK6FL_ES2xCQynJOWoAeaLhf0,319909
31
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/parser/moves,sha256=7EExjDLrf55NjwULLoRm7meVTS00VcGuxzq_Rsgt1n8,1571
32
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/senter/cfg,sha256=Kk20pym2Rp2h-H1xzHzT7SpzNgzIUyaCHoUINsRnEQM,23
33
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/senter/model,sha256=5iwlBNzcZhRLMMBIEArwXxIgf5M_bWaZgrlHrnH_3u8,197089
34
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/tagger/cfg,sha256=1ITD2TkfN7-ccnqi60xHeiTLEDAg-V5S3DeEKBi1ARg,615
35
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/tagger/model,sha256=-wDvWSoqRk2V3Yic5CSVKuf9ZOCVFTBUwxA0UZjMD8Q,19829
36
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/tok2vec/cfg,sha256=-KWibjBW62-wbe6z28z9iK50kAIAyYxwtZZru37J1N4,4
37
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/tok2vec/model,sha256=QthBRSHq91-Be9GzUbJgOaIqkSuyYX-V6tMFQg8uv_0,6269370
38
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/vocab/key2row,sha256=dr6LUo0Adfeq6Y1vpXptPIOuSAqEaeZo17CvlomVrHE,1
39
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/vocab/lookups.bin,sha256=_OnIg8VhZfKVc8yTjCocnUF6xhvY9WtnHdX3mW3nBoI,70040
40
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/vocab/strings.json,sha256=sZZtHwegW2hXbfB_Q_QCA7ThESStgsyDnoMSrY1_2uc,1103983
41
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/vocab/vectors,sha256=FHcraD5yZDbVlIrT__K0PQNu8uu-NFiq_tYATgWkBwY,128
42
+ dasein/models/en_core_web_sm/en_core_web_sm/en_core_web_sm-3.7.1/vocab/vectors.cfg,sha256=_0NZCRlSyM0W8fBIL1dw-4LRcHNo1cyjxGqlAfVS48U,22
43
+ dasein/services/__init__.py,sha256=0o6vKEVSYgGo-u-xDFf7Z4cQr8gIht2YovD6eEXUquE,356
44
+ dasein/services/post_run_client.py,sha256=UjK3eqf7oWGSuWkKe0vQmeMS0yUUOhYFD4-SZ7uj8WY,4768
45
+ dasein/services/pre_run_client.py,sha256=tXmz_PQaSfq0xwypiWUAqNkXOmREZ6EwXLC4OM89J-A,4317
46
+ dasein/services/service_adapter.py,sha256=YHk41lR3PXh8WTmxOzzwKf6hwPYGqIdApI92vQKlkAY,7350
47
+ dasein/services/service_config.py,sha256=8_4tpV4mZvfaOc5_yyHbOyL4rYsPHzkLTEY1rtYgLs8,1629
48
+ dasein_core-0.2.10.dist-info/licenses/LICENSE,sha256=7FHjIFEKl_3hSc3tGUVEWmufC_3oi8rh_2zVuL7jMKs,1091
49
+ dasein/models/en_core_web_sm/en_core_web_sm-3.7.1.dist-info/LICENSE,sha256=OTPBdpebaLxtC8yQLH1sEw8dEn9Hbxe6XNuo2Zz9ABI,1056
50
+ dasein/models/en_core_web_sm/en_core_web_sm-3.7.1.dist-info/LICENSES_SOURCES,sha256=INnfrNIVESJR8VNB7dGkex-Yvzk6IS8Q8ZT_3H7pipA,2347
51
+ dasein/models/en_core_web_sm/en_core_web_sm-3.7.1.dist-info/METADATA,sha256=-vGqRxa_M2RwKtLjBhc4JlBQdJ3k7CwOnseT_ReYcic,2958
52
+ dasein/models/en_core_web_sm/en_core_web_sm-3.7.1.dist-info/RECORD,sha256=dDb6U7A5lfo6wu0J5z2vXZQnv4IckBO-X9UDR79rdHg,3547
53
+ dasein/models/en_core_web_sm/en_core_web_sm-3.7.1.dist-info/WHEEL,sha256=Xo9-1PvkuimrydujYJAjF7pCkriuXBpUPEjma1nZyJ0,92
54
+ dasein/models/en_core_web_sm/en_core_web_sm-3.7.1.dist-info/entry_points.txt,sha256=OkWs-KxPJtDdpvIFCVXzDC9ECtejhPxv7pP3Tgk2cNg,47
55
+ dasein/models/en_core_web_sm/en_core_web_sm-3.7.1.dist-info/top_level.txt,sha256=56OIuRbEuhr12HsM9XpCMnTtHRMgNC5Hje4Xeo8wF2c,15
56
+ dasein_core-0.2.10.dist-info/METADATA,sha256=BotwsA09ka3tRHCKiI0Ms8Jb8Zss87Q5zBG0OL_3VuA,10297
57
+ dasein_core-0.2.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
58
+ dasein_core-0.2.10.dist-info/top_level.txt,sha256=6yYY9kltjvvPsg9K6KyMKRtzEr5qM7sHXN7VzmrDtp0,7
59
+ dasein_core-0.2.10.dist-info/RECORD,,
@@ -1,21 +0,0 @@
1
- dasein/__init__.py,sha256=RY0lhaaWB6yJ_5YMRmaHDvQ0eFbc0BGbYNe5OVyxzYE,2316
2
- dasein/advice_format.py,sha256=5-h4J24L_B2Y9dlmyDuIYtmPCWOGAYoinBEXqpcNg2s,5386
3
- dasein/api.py,sha256=KIWZ5I_8in2xas50IAfUOCmZgjaaXYxPcM0BgMx7Bs0,177347
4
- dasein/capture.py,sha256=XrEPsteG5__csqcqXzOmBSzPYgeI-OFzu3IRVMPYj3w,83814
5
- dasein/config.py,sha256=lXO8JG4RXbodn3gT5yEnuB0VRwWdrRVwhX3Rm06IZmU,1957
6
- dasein/events.py,sha256=mG-lnOvQoZUhXbrPSjrG4RME6ywUcbSZ04PscoJ15GI,12896
7
- dasein/extractors.py,sha256=fUFBVH9u2x4cJaM-8Zw4qiIpBF2LvjcdYkMvoXQUpL8,3986
8
- dasein/injection_strategies.py,sha256=JBAvLnJK4xKqK4D1ZQnklIy-yIKSvWuvm2x0YGDMZVU,6507
9
- dasein/injector.py,sha256=EItWhlG6oMAf_D7YJnRNyDwAQIK5MsaATu1ig3OENqM,7256
10
- dasein/trace_buffer.py,sha256=bIyTpU8ZrNFR_TCwS43HvzUrDHpZ2F8pLVDeUE9jpwM,4117
11
- dasein/types.py,sha256=FjGXZowiRYZzWj5GzSnAnA_-xwYqqE7WmXFCosVyGI8,2974
12
- dasein/services/__init__.py,sha256=0o6vKEVSYgGo-u-xDFf7Z4cQr8gIht2YovD6eEXUquE,356
13
- dasein/services/post_run_client.py,sha256=UjK3eqf7oWGSuWkKe0vQmeMS0yUUOhYFD4-SZ7uj8WY,4768
14
- dasein/services/pre_run_client.py,sha256=tXmz_PQaSfq0xwypiWUAqNkXOmREZ6EwXLC4OM89J-A,4317
15
- dasein/services/service_adapter.py,sha256=YHk41lR3PXh8WTmxOzzwKf6hwPYGqIdApI92vQKlkAY,7350
16
- dasein/services/service_config.py,sha256=8_4tpV4mZvfaOc5_yyHbOyL4rYsPHzkLTEY1rtYgLs8,1629
17
- dasein_core-0.2.7.dist-info/licenses/LICENSE,sha256=7FHjIFEKl_3hSc3tGUVEWmufC_3oi8rh_2zVuL7jMKs,1091
18
- dasein_core-0.2.7.dist-info/METADATA,sha256=M7zLIt6gXOfna7oFIMtqECJMqSU4WufP8g2IoeMJqKk,10192
19
- dasein_core-0.2.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
20
- dasein_core-0.2.7.dist-info/top_level.txt,sha256=6yYY9kltjvvPsg9K6KyMKRtzEr5qM7sHXN7VzmrDtp0,7
21
- dasein_core-0.2.7.dist-info/RECORD,,