fabricatio 0.2.10.dev0__cp312-cp312-win_amd64.whl → 0.2.11__cp312-cp312-win_amd64.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 (37) hide show
  1. fabricatio/actions/article.py +55 -10
  2. fabricatio/actions/article_rag.py +297 -12
  3. fabricatio/actions/fs.py +25 -0
  4. fabricatio/actions/output.py +17 -3
  5. fabricatio/actions/rag.py +42 -20
  6. fabricatio/actions/rules.py +14 -3
  7. fabricatio/capabilities/extract.py +70 -0
  8. fabricatio/capabilities/rag.py +5 -2
  9. fabricatio/capabilities/rating.py +5 -2
  10. fabricatio/capabilities/task.py +16 -16
  11. fabricatio/config.py +9 -2
  12. fabricatio/decorators.py +43 -26
  13. fabricatio/fs/__init__.py +9 -2
  14. fabricatio/fs/readers.py +6 -10
  15. fabricatio/models/action.py +16 -11
  16. fabricatio/models/adv_kwargs_types.py +5 -12
  17. fabricatio/models/extra/aricle_rag.py +254 -0
  18. fabricatio/models/extra/article_base.py +56 -7
  19. fabricatio/models/extra/article_essence.py +8 -7
  20. fabricatio/models/extra/article_main.py +102 -6
  21. fabricatio/models/extra/problem.py +5 -1
  22. fabricatio/models/extra/rag.py +49 -23
  23. fabricatio/models/generic.py +43 -24
  24. fabricatio/models/kwargs_types.py +12 -3
  25. fabricatio/models/task.py +13 -1
  26. fabricatio/models/usages.py +10 -27
  27. fabricatio/parser.py +16 -12
  28. fabricatio/rust.cp312-win_amd64.pyd +0 -0
  29. fabricatio/rust.pyi +177 -63
  30. fabricatio/utils.py +50 -10
  31. fabricatio-0.2.11.data/scripts/tdown.exe +0 -0
  32. {fabricatio-0.2.10.dev0.dist-info → fabricatio-0.2.11.dist-info}/METADATA +20 -12
  33. fabricatio-0.2.11.dist-info/RECORD +65 -0
  34. fabricatio-0.2.10.dev0.data/scripts/tdown.exe +0 -0
  35. fabricatio-0.2.10.dev0.dist-info/RECORD +0 -62
  36. {fabricatio-0.2.10.dev0.dist-info → fabricatio-0.2.11.dist-info}/WHEEL +0 -0
  37. {fabricatio-0.2.10.dev0.dist-info → fabricatio-0.2.11.dist-info}/licenses/LICENSE +0 -0
fabricatio/rust.pyi CHANGED
@@ -12,7 +12,7 @@ Key Features:
12
12
  """
13
13
 
14
14
  from pathlib import Path
15
- from typing import Any, Dict, List, Optional
15
+ from typing import Any, Dict, List, Optional, overload
16
16
 
17
17
  class TemplateManager:
18
18
  """Template rendering engine using Handlebars templates.
@@ -54,86 +54,39 @@ class TemplateManager:
54
54
  This refreshes the template cache, finding any new or modified templates.
55
55
  """
56
56
 
57
- def render_template(self, name: str, data: Dict[str, Any]) -> str:
57
+ @overload
58
+ def render_template(self, name: str, data: Dict[str, Any]) -> str: ...
59
+ @overload
60
+ def render_template(self, name: str, data: List[Dict[str, Any]]) -> List[str]: ...
61
+ def render_template(self, name: str, data: Dict[str, Any] | List[Dict[str, Any]]) -> str | List[str]:
58
62
  """Render a template with context data.
59
63
 
60
64
  Args:
61
65
  name: Template name (without extension)
62
- data: Context dictionary to provide variables to the template
66
+ data: Context dictionary or list of dictionaries to provide variables to the template
63
67
 
64
68
  Returns:
65
- Rendered template content as string
69
+ Rendered template content as string or list of strings
66
70
 
67
71
  Raises:
68
72
  RuntimeError: If template rendering fails
69
73
  """
70
74
 
71
- def render_template_raw(self, template: str, data: Dict[str, Any]) -> str:
75
+ @overload
76
+ def render_template_raw(self, template: str, data: Dict[str, Any]) -> str: ...
77
+ @overload
78
+ def render_template_raw(self, template: str, data: List[Dict[str, Any]]) -> List[str]: ...
79
+ def render_template_raw(self, template: str, data: Dict[str, Any] | List[Dict[str, Any]]) -> str | List[str]:
72
80
  """Render a template with context data.
73
81
 
74
82
  Args:
75
83
  template: The template string
76
- data: Context dictionary to provide variables to the template
84
+ data: Context dictionary or list of dictionaries to provide variables to the template
77
85
 
78
86
  Returns:
79
- Rendered template content as string
87
+ Rendered template content as string or list of strings
80
88
  """
81
89
 
82
- def blake3_hash(content: bytes) -> str:
83
- """Calculate the BLAKE3 cryptographic hash of data.
84
-
85
- Args:
86
- content: Bytes to be hashed
87
-
88
- Returns:
89
- Hex-encoded BLAKE3 hash string
90
- """
91
-
92
- def detect_language(string: str) -> str:
93
- """Detect the language of a given string."""
94
-
95
- def split_word_bounds(string: str) -> List[str]:
96
- """Split the string into words based on word boundaries.
97
-
98
- Args:
99
- string: The input string to be split.
100
-
101
- Returns:
102
- A list of words extracted from the string.
103
- """
104
-
105
- def split_sentence_bounds(string: str) -> List[str]:
106
- """Split the string into sentences based on sentence boundaries.
107
-
108
- Args:
109
- string: The input string to be split.
110
-
111
- Returns:
112
- A list of sentences extracted from the string.
113
- """
114
-
115
- def split_into_chunks(string: str, max_chunk_size: int, max_overlapping_rate: float = 0.3) -> List[str]:
116
- """Split the string into chunks of a specified size.
117
-
118
- Args:
119
- string: The input string to be split.
120
- max_chunk_size: The maximum size of each chunk.
121
- max_overlapping_rate: The minimum overlapping rate between chunks.
122
-
123
- Returns:
124
- A list of chunks extracted from the string.
125
- """
126
-
127
- def word_count(string: str) -> int:
128
- """Count the number of words in the string.
129
-
130
- Args:
131
- string: The input string to count words from.
132
-
133
- Returns:
134
- The number of words in the string.
135
- """
136
-
137
90
  class BibManager:
138
91
  """BibTeX bibliography manager for parsing and querying citation data."""
139
92
 
@@ -147,7 +100,7 @@ class BibManager:
147
100
  RuntimeError: If file cannot be read or parsed
148
101
  """
149
102
 
150
- def get_cite_key(self, title: str) -> Optional[str]:
103
+ def get_cite_key_by_title(self, title: str) -> Optional[str]:
151
104
  """Find citation key by exact title match.
152
105
 
153
106
  Args:
@@ -157,6 +110,16 @@ class BibManager:
157
110
  Citation key if exact match found, None otherwise
158
111
  """
159
112
 
113
+ def get_cite_key_by_title_fuzzy(self, title: str) -> Optional[str]:
114
+ """Find citation key by fuzzy title match.
115
+
116
+ Args:
117
+ title: Search term to find in bibliography entries
118
+
119
+ Returns:
120
+ Citation key of best matching entry, or None if no good match
121
+ """
122
+
160
123
  def get_cite_key_fuzzy(self, query: str) -> Optional[str]:
161
124
  """Find best matching citation using fuzzy text search.
162
125
 
@@ -210,6 +173,7 @@ class BibManager:
210
173
  Returns:
211
174
  Abstract if found, None otherwise
212
175
  """
176
+
213
177
  def get_title_by_key(self, key: str) -> Optional[str]:
214
178
  """Retrieve the title by citation key.
215
179
 
@@ -230,3 +194,153 @@ class BibManager:
230
194
  Returns:
231
195
  Field value if found, None otherwise
232
196
  """
197
+
198
+ def blake3_hash(content: bytes) -> str:
199
+ """Calculate the BLAKE3 cryptographic hash of data.
200
+
201
+ Args:
202
+ content: Bytes to be hashed
203
+
204
+ Returns:
205
+ Hex-encoded BLAKE3 hash string
206
+ """
207
+
208
+ def detect_language(string: str) -> str:
209
+ """Detect the language of a given string."""
210
+
211
+ def split_word_bounds(string: str) -> List[str]:
212
+ """Split the string into words based on word boundaries.
213
+
214
+ Args:
215
+ string: The input string to be split.
216
+
217
+ Returns:
218
+ A list of words extracted from the string.
219
+ """
220
+
221
+ def split_sentence_bounds(string: str) -> List[str]:
222
+ """Split the string into sentences based on sentence boundaries.
223
+
224
+ Args:
225
+ string: The input string to be split.
226
+
227
+ Returns:
228
+ A list of sentences extracted from the string.
229
+ """
230
+
231
+ def split_into_chunks(string: str, max_chunk_size: int, max_overlapping_rate: float = 0.3) -> List[str]:
232
+ """Split the string into chunks of a specified size.
233
+
234
+ Args:
235
+ string: The input string to be split.
236
+ max_chunk_size: The maximum size of each chunk.
237
+ max_overlapping_rate: The minimum overlapping rate between chunks.
238
+
239
+ Returns:
240
+ A list of chunks extracted from the string.
241
+ """
242
+
243
+ def word_count(string: str) -> int:
244
+ """Count the number of words in the string.
245
+
246
+ Args:
247
+ string: The input string to count words from.
248
+
249
+ Returns:
250
+ The number of words in the string.
251
+ """
252
+
253
+ def is_chinese(string: str) -> bool:
254
+ """Check if the given string is in Chinese."""
255
+
256
+ def is_english(string: str) -> bool:
257
+ """Check if the given string is in English."""
258
+
259
+ def is_japanese(string: str) -> bool:
260
+ """Check if the given string is in Japanese."""
261
+
262
+ def is_korean(string: str) -> bool:
263
+ """Check if the given string is in Korean."""
264
+
265
+ def is_arabic(string: str) -> bool:
266
+ """Check if the given string is in Arabic."""
267
+
268
+ def is_russian(string: str) -> bool:
269
+ """Check if the given string is in Russian."""
270
+
271
+ def is_german(string: str) -> bool:
272
+ """Check if the given string is in German."""
273
+
274
+ def is_french(string: str) -> bool:
275
+ """Check if the given string is in French."""
276
+
277
+ def is_hindi(string: str) -> bool:
278
+ """Check if the given string is in Hindi."""
279
+
280
+ def is_italian(string: str) -> bool:
281
+ """Check if the given string is in Italian."""
282
+
283
+ def is_dutch(string: str) -> bool:
284
+ """Check if the given string is in Dutch."""
285
+
286
+ def is_portuguese(string: str) -> bool:
287
+ """Check if the given string is in Portuguese."""
288
+
289
+ def is_swedish(string: str) -> bool:
290
+ """Check if the given string is in Swedish."""
291
+
292
+ def is_turkish(string: str) -> bool:
293
+ """Check if the given string is in Turkish."""
294
+
295
+ def is_vietnamese(string: str) -> bool:
296
+ """Check if the given string is in Vietnamese."""
297
+
298
+ def tex_to_typst(string: str) -> str:
299
+ """Convert TeX to Typst.
300
+
301
+ Args:
302
+ string: The input TeX string to be converted.
303
+
304
+ Returns:
305
+ The converted Typst string.
306
+ """
307
+
308
+ def convert_all_inline_tex(string: str) -> str:
309
+ """Convert all inline TeX code in the string.
310
+
311
+ Args:
312
+ string: The input string containing inline TeX code wrapped in $code$.
313
+
314
+ Returns:
315
+ The converted string with inline TeX code replaced.
316
+ """
317
+
318
+ def convert_all_block_tex(string: str) -> str:
319
+ """Convert all block TeX code in the string.
320
+
321
+ Args:
322
+ string: The input string containing block TeX code wrapped in $$code$$.
323
+
324
+ Returns:
325
+ The converted string with block TeX code replaced.
326
+ """
327
+
328
+ def comment(string: str) -> str:
329
+ """Add comment to the string.
330
+
331
+ Args:
332
+ string: The input string to which comments will be added.
333
+
334
+ Returns:
335
+ The string with each line prefixed by '// '.
336
+ """
337
+
338
+ def uncomment(string: str) -> str:
339
+ """Remove comment from the string.
340
+
341
+ Args:
342
+ string: The input string from which comments will be removed.
343
+
344
+ Returns:
345
+ The string with comments (lines starting with '// ' or '//') removed.
346
+ """
fabricatio/utils.py CHANGED
@@ -1,13 +1,14 @@
1
1
  """A collection of utility functions for the fabricatio package."""
2
2
 
3
- from typing import Any, Dict, List, Mapping, Optional
3
+ from typing import Any, Dict, List, Mapping, Optional, overload
4
4
 
5
- from questionary import text
5
+ from fabricatio.decorators import precheck_package
6
6
 
7
7
 
8
- async def ask_edit(
9
- text_seq: List[str],
10
- ) -> List[str]:
8
+ @precheck_package(
9
+ "questionary", "'questionary' is required to run this function. Have you installed `fabricatio[qa]`?."
10
+ )
11
+ async def ask_edit(text_seq: List[str]) -> List[str]:
11
12
  """Asks the user to edit a list of texts.
12
13
 
13
14
  Args:
@@ -17,6 +18,8 @@ async def ask_edit(
17
18
  List[str]: A list of edited texts.
18
19
  If the user does not edit a text, it will not be included in the returned list.
19
20
  """
21
+ from questionary import text
22
+
20
23
  res = []
21
24
  for i, t in enumerate(text_seq):
22
25
  edited = await text(f"[{i}] ", default=t).ask_async()
@@ -25,17 +28,40 @@ async def ask_edit(
25
28
  return res
26
29
 
27
30
 
28
- def override_kwargs(kwargs: Mapping[str,Any], **overrides) -> Dict[str, Any]:
31
+ @overload
32
+ async def ask_retain[V](candidates: List[str]) -> List[str]: ...
33
+
34
+
35
+ @overload
36
+ async def ask_retain[V](candidates: List[str], value_mapping: List[V]) -> List[V]: ...
37
+
38
+
39
+ @precheck_package(
40
+ "questionary", "'questionary' is required to run this function. Have you installed `fabricatio[qa]`?."
41
+ )
42
+ async def ask_retain[V](candidates: List[str], value_mapping: Optional[List[V]] = None) -> List[str] | List[V]:
43
+ """Asks the user to retain a list of candidates."""
44
+ from questionary import Choice, checkbox
45
+
46
+ return await checkbox(
47
+ "Please choose those that should be retained.",
48
+ choices=[Choice(p, value=p, checked=True) for p in candidates]
49
+ if value_mapping is None
50
+ else [Choice(p, value=v, checked=True) for p, v in zip(candidates, value_mapping, strict=True)],
51
+ ).ask_async()
52
+
53
+
54
+ def override_kwargs(kwargs: Mapping[str, Any], **overrides) -> Dict[str, Any]:
29
55
  """Override the values in kwargs with the provided overrides."""
30
56
  new_kwargs = dict(kwargs.items())
31
- new_kwargs.update({k: v for k, v in overrides.items() if v is not None})
57
+ new_kwargs.update(overrides)
32
58
  return new_kwargs
33
59
 
34
60
 
35
- def fallback_kwargs(kwargs: Mapping[str, Any], **overrides) -> Dict[str, Any]:
36
- """Fallback the values in kwargs with the provided overrides."""
61
+ def fallback_kwargs(kwargs: Mapping[str, Any], **fallbacks) -> Dict[str, Any]:
62
+ """Fallback the values in kwargs with the provided fallbacks."""
37
63
  new_kwargs = dict(kwargs.items())
38
- new_kwargs.update({k: v for k, v in overrides.items() if k not in new_kwargs and v is not None})
64
+ new_kwargs.update({k: v for k, v in fallbacks.items() if k not in new_kwargs})
39
65
  return new_kwargs
40
66
 
41
67
 
@@ -52,3 +78,17 @@ def ok[T](val: Optional[T], msg: str = "Value is None") -> T:
52
78
  if val is None:
53
79
  raise ValueError(msg)
54
80
  return val
81
+
82
+
83
+ def wrapp_in_block(string: str, title: str, style: str = "-") -> str:
84
+ """Wraps a string in a block with a title.
85
+
86
+ Args:
87
+ string: The string to wrap.
88
+ title: The title of the block.
89
+ style: The style of the block.
90
+
91
+ Returns:
92
+ str: The wrapped string.
93
+ """
94
+ return f"--- Start of {title} ---\n{string}\n--- End of {title} ---".replace("-", style)
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fabricatio
3
- Version: 0.2.10.dev0
3
+ Version: 0.2.11
4
4
  Classifier: License :: OSI Approved :: MIT License
5
5
  Classifier: Programming Language :: Rust
6
6
  Classifier: Programming Language :: Python :: 3.12
@@ -14,24 +14,26 @@ Requires-Dist: asyncstdlib>=3.13.0
14
14
  Requires-Dist: json-repair>=0.39.1
15
15
  Requires-Dist: litellm>=1.60.0
16
16
  Requires-Dist: loguru>=0.7.3
17
- Requires-Dist: magika>=0.5.1
18
17
  Requires-Dist: more-itertools>=10.6.0
19
- Requires-Dist: orjson>=3.10.15
20
18
  Requires-Dist: pydantic>=2.10.6
21
19
  Requires-Dist: pydantic-settings>=2.7.1
22
20
  Requires-Dist: pymitter>=1.0.0
23
- Requires-Dist: questionary>=2.1.0
24
- Requires-Dist: regex>=2024.11.6
25
21
  Requires-Dist: rich>=13.9.4
26
- Requires-Dist: rtoml>=0.12.0
22
+ Requires-Dist: ujson>=5.10.0
23
+ Requires-Dist: fabricatio[calc,ftd,plot,qa,rag,cli] ; extra == 'full'
27
24
  Requires-Dist: pymilvus>=2.5.4 ; extra == 'rag'
28
- Requires-Dist: fabricatio[calc,plot,rag] ; extra == 'full'
29
25
  Requires-Dist: sympy>=1.13.3 ; extra == 'calc'
30
26
  Requires-Dist: matplotlib>=3.10.1 ; extra == 'plot'
31
- Provides-Extra: rag
27
+ Requires-Dist: questionary>=2.1.0 ; extra == 'qa'
28
+ Requires-Dist: magika>=0.6.1 ; extra == 'ftd'
29
+ Requires-Dist: typer-slim[standard]>=0.15.2 ; extra == 'cli'
32
30
  Provides-Extra: full
31
+ Provides-Extra: rag
33
32
  Provides-Extra: calc
34
33
  Provides-Extra: plot
34
+ Provides-Extra: qa
35
+ Provides-Extra: ftd
36
+ Provides-Extra: cli
35
37
  License-File: LICENSE
36
38
  Summary: A LLM multi-agent framework.
37
39
  Keywords: ai,agents,multi-agent,llm,pyo3
@@ -45,12 +47,11 @@ Project-URL: Issues, https://github.com/Whth/fabricatio/issues
45
47
  # Fabricatio
46
48
 
47
49
  ![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)
48
- ![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)
49
- ![Build Status](https://img.shields.io/badge/build-passing-brightgreen)
50
50
 
51
51
  ## Overview
52
52
 
53
- Fabricatio is a streamlined Python library for building LLM applications using an event-based agent structure. It leverages Rust for performance-critical tasks, Handlebars for templating, and PyO3 for Python bindings.
53
+ Fabricatio is a streamlined Python library for building LLM applications using an event-based agent structure. It
54
+ leverages Rust for performance-critical tasks, Handlebars for templating, and PyO3 for Python bindings.
54
55
 
55
56
  ## Features
56
57
 
@@ -90,6 +91,7 @@ import asyncio
90
91
  from fabricatio import Action, Role, Task, logger, WorkFlow
91
92
  from typing import Any
92
93
 
94
+
93
95
  class Hello(Action):
94
96
  name: str = "hello"
95
97
  output_key: str = "task_output"
@@ -99,6 +101,7 @@ class Hello(Action):
99
101
  logger.info("executing talk action")
100
102
  return ret
101
103
 
104
+
102
105
  async def main() -> None:
103
106
  role = Role(
104
107
  name="talker",
@@ -110,6 +113,7 @@ async def main() -> None:
110
113
  result = await task.delegate()
111
114
  logger.success(f"Result: {result}")
112
115
 
116
+
113
117
  if __name__ == "__main__":
114
118
  asyncio.run(main())
115
119
  ```
@@ -117,6 +121,7 @@ if __name__ == "__main__":
117
121
  ### Examples
118
122
 
119
123
  For various usage scenarios, refer to the following examples:
124
+
120
125
  - Simple Chat
121
126
  - Retrieval-Augmented Generation (RAG)
122
127
  - Article Extraction
@@ -164,6 +169,7 @@ max_tokens = 8192
164
169
  ## Contributing
165
170
 
166
171
  Contributions are welcome! Follow these steps:
172
+
167
173
  1. Fork the repository.
168
174
  2. Create your feature branch (`git checkout -b feature/new-feature`).
169
175
  3. Commit your changes (`git commit -am 'Add new feature'`).
@@ -177,6 +183,8 @@ Fabricatio is licensed under the MIT License. See [LICENSE](LICENSE) for details
177
183
  ## Acknowledgments
178
184
 
179
185
  Special thanks to the contributors and maintainers of:
186
+
180
187
  - [PyO3](https://github.com/PyO3/pyo3)
181
188
  - [Maturin](https://github.com/PyO3/maturin)
182
- - [Handlebars.rs](https://github.com/sunng87/handlebars-rust)
189
+ - [Handlebars.rs](https://github.com/sunng87/handlebars-rust)
190
+
@@ -0,0 +1,65 @@
1
+ fabricatio-0.2.11.dist-info/METADATA,sha256=wBBVlkmwss-SZ0r5ZLkffvhEv5eYksk-w_uBygWe-pg,5258
2
+ fabricatio-0.2.11.dist-info/WHEEL,sha256=jABKVkLC9kJr8mi_er5jOqpiQUjARSLXDUIIxDqsS50,96
3
+ fabricatio-0.2.11.dist-info/licenses/LICENSE,sha256=do7J7EiCGbq0QPbMAL_FqLYufXpHnCnXBOuqVPwSV8Y,1088
4
+ fabricatio/actions/article.py,sha256=SFl1zc0hz9vW2sW4VJm9-w8E7kLEty-2LzXi9wgWMmE,10905
5
+ fabricatio/actions/article_rag.py,sha256=DuGjW0z5ryVEZddTt3bM4I7B7p7UnDzk7PdIqRvgBd0,17614
6
+ fabricatio/actions/fs.py,sha256=gJR14U4ln35nt8Z7OWLVAZpqGaLnED-r1Yi-lX22tkI,959
7
+ fabricatio/actions/output.py,sha256=ttXLC2wZmtVN9Ik8zsA7g45rwBO656LyRjOGRdVSyJA,6977
8
+ fabricatio/actions/rag.py,sha256=KN-OWgcQjGmNgSZ-s5B8m4LpYKSGFJR8eq72mo2CP9k,3592
9
+ fabricatio/actions/rules.py,sha256=dkvCgNDjt2KSO1VgPRsxT4YBmIIMeetZb5tiz-slYkU,3640
10
+ fabricatio/actions/__init__.py,sha256=wVENCFtpVb1rLFxoOFJt9-8smLWXuJV7IwA8P3EfFz4,48
11
+ fabricatio/capabilities/advanced_judge.py,sha256=selB0Gwf1F4gGJlwBiRo6gI4KOUROgh3WnzO3mZFEls,706
12
+ fabricatio/capabilities/censor.py,sha256=bBT5qy-kp7fh8g4Lz3labSwxwJ60gGd_vrkc6k1cZ1U,4719
13
+ fabricatio/capabilities/check.py,sha256=kYqzohhv2bZfl1aKSUt7a8snT8YEl2zgha_ZdAdMMfQ,8622
14
+ fabricatio/capabilities/correct.py,sha256=W_cInqlciNEhyMK0YI53jk4EvW9uAdge90IO9OElUmA,10420
15
+ fabricatio/capabilities/extract.py,sha256=PMjkWvbsv57IYT7zzd_xbIu4eQqQjpcmBtJzqlWZhHY,2495
16
+ fabricatio/capabilities/propose.py,sha256=hkBeSlmcTdfYWT-ph6nlbtHXBozi_JXqXlWcnBy3W78,2007
17
+ fabricatio/capabilities/rag.py,sha256=kqcunWBC6oA4P1rzIG2Xu9zqSg73H3uKPF41JJQ1HVI,9595
18
+ fabricatio/capabilities/rating.py,sha256=iMtQs3H6vCjuEjiuuz4SRKMVaX7yff7MHWz-slYvi5g,17835
19
+ fabricatio/capabilities/review.py,sha256=-EMZe0ADFPT6fPGmra16UPjJC1M3rAs6dPFdTZ88Fgg,5060
20
+ fabricatio/capabilities/task.py,sha256=uks1U-4LNCUdwdRxAbJJjMc31hOw6jlrcYriuQQfb04,4475
21
+ fabricatio/capabilities/__init__.py,sha256=v1cHRHIJ2gxyqMLNCs6ERVcCakSasZNYzmMI4lqAcls,57
22
+ fabricatio/config.py,sha256=okqrVoLhvmAjmfQXlLY3js4nC_qW4v7mxoYaGO2dMQ8,17984
23
+ fabricatio/constants.py,sha256=thfDuF6JEtJ5CHOnAJLfqvn5834n8ep6DH2jc6XGzQM,577
24
+ fabricatio/core.py,sha256=VQ_JKgUGIy2gZ8xsTBZCdr_IP7wC5aPg0_bsOmjQ588,6458
25
+ fabricatio/decorators.py,sha256=RFMYUlQPf561-BIHetpMd7fPig5bZ2brzWiQTgoLOlY,8966
26
+ fabricatio/fs/curd.py,sha256=p8y0LGKgVDk-CWOlm37E6wg7RK6RCD6denKo-VsW28c,4763
27
+ fabricatio/fs/readers.py,sha256=UXvcJO3UCsxHu9PPkg34Yh55Zi-miv61jD_wZQJgKRs,1751
28
+ fabricatio/fs/__init__.py,sha256=FydmlEY_3QY74r1BpGDc5lFLhE6g6gkwOAtE30Fo-aI,786
29
+ fabricatio/journal.py,sha256=stnEP88aUBA_GmU9gfTF2EZI8FS2OyMLGaMSTgK4QgA,476
30
+ fabricatio/models/action.py,sha256=_Do4XKqfV8RChLTYMIuxR1oUoInKe1jOt0UfrrSdGSQ,10140
31
+ fabricatio/models/adv_kwargs_types.py,sha256=kUO-SiZtFuz5cZCmMLnJJ9tjQ4-Zd_foo6R8HQMlM5A,1950
32
+ fabricatio/models/events.py,sha256=wiirk_ASg3iXDOZU_gIimci1VZVzWE1nDmxy-hQVJ9M,4150
33
+ fabricatio/models/extra/advanced_judge.py,sha256=INUl_41C8jkausDekkjnEmTwNfLCJ23TwFjq2cM23Cw,1092
34
+ fabricatio/models/extra/aricle_rag.py,sha256=vs4d_-AdbtIVTcUJGzp69itvJ0oiQp2Roflw2SnmVso,10272
35
+ fabricatio/models/extra/article_base.py,sha256=tO0Ql-wzsGHpgkCdAbP6WwNUJAgw4HPPr6jGXJDKHac,14134
36
+ fabricatio/models/extra/article_essence.py,sha256=mlIkkRMR3I1RtqiiOnmIE3Vy623L4eECumkRzryE1pw,2749
37
+ fabricatio/models/extra/article_main.py,sha256=Oz6X7tHztb6zwnJQnw9XlgVwTp8kfI9ywkWUY3_fe_E,11824
38
+ fabricatio/models/extra/article_outline.py,sha256=w7O0SHgC7exbptWVbR62FMHAueMgBpyWKVYMGGl_oj8,1427
39
+ fabricatio/models/extra/article_proposal.py,sha256=NbyjW-7UiFPtnVD9nte75re4xL2pD4qL29PpNV4Cg_M,1870
40
+ fabricatio/models/extra/patches.py,sha256=_WNCxtYzzsVfUxI16vu4IqsLahLYRHdbQN9er9tqhC0,997
41
+ fabricatio/models/extra/problem.py,sha256=8tTU-3giFHOi5j7NJsvH__JJyYcaGrcfsRnkzQNm0Ew,7216
42
+ fabricatio/models/extra/rag.py,sha256=RMi8vhEPB0I5mVmjRLRLxYHUnm9pFhvVwysaIwmW2s0,3955
43
+ fabricatio/models/extra/rule.py,sha256=KQQELVhCLUXhEZ35jU3WGYqKHuCYEAkn0p6pxAE-hOU,2625
44
+ fabricatio/models/extra/__init__.py,sha256=XlYnS_2B9nhLhtQkjE7rvvfPmAAtXVdNi9bSDAR-Ge8,54
45
+ fabricatio/models/generic.py,sha256=1SfneELXtN4SZ0pejq01fHGYNAjIeO6wSi2315jbKeo,31153
46
+ fabricatio/models/kwargs_types.py,sha256=BPqZUgxz4WJaB7hmvrhNxHXp-O7O4SiAdn6UguBRij8,4784
47
+ fabricatio/models/role.py,sha256=-CRcj5_M3_ciLPzwiNn92grBmwoSLQ-n4koVZiCNTBM,2953
48
+ fabricatio/models/task.py,sha256=bLYSKjlRAlb4jMYyF12RTnm_8pVXysSmX8CYLrEmbQ8,11096
49
+ fabricatio/models/tool.py,sha256=jQ51g4lwTPfsMF1nbreDJtBczbxIHoXcPuLSOqHliq8,12506
50
+ fabricatio/models/usages.py,sha256=0bzITf0vug9ZaN6qnjNfFB7T8BAvpXE0bvx0otFYLLA,33356
51
+ fabricatio/parser.py,sha256=-RbW2yzfJiu2ARq-lZw4tfgsjY2rIZWtJpoUmaE6gJQ,6637
52
+ fabricatio/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
+ fabricatio/rust.pyi,sha256=GJRLeeQ1UIaf5kOgJWX2GkwIacoTBk3yBKuD5cKW8i4,10489
54
+ fabricatio/rust_instances.py,sha256=Byeo8KHW_dJiXujJq7YPGDLBX5bHNDYbBc4sY3uubVY,313
55
+ fabricatio/toolboxes/arithmetic.py,sha256=WLqhY-Pikv11Y_0SGajwZx3WhsLNpHKf9drzAqOf_nY,1369
56
+ fabricatio/toolboxes/fs.py,sha256=l4L1CVxJmjw9Ld2XUpIlWfV0_Fu_2Og6d3E13I-S4aE,736
57
+ fabricatio/toolboxes/__init__.py,sha256=KBJi5OG_pExscdlM7Bnt_UF43j4I3Lv6G71kPVu4KQU,395
58
+ fabricatio/utils.py,sha256=4aK6bNHCCGEbSkLRKrDBzabuVAow9PrJ6SVGUX1Rt-U,3098
59
+ fabricatio/workflows/articles.py,sha256=ObYTFUqLUk_CzdmmnX6S7APfxcGmPFqnFr9pdjU7Z4Y,969
60
+ fabricatio/workflows/rag.py,sha256=-YYp2tlE9Vtfgpg6ROpu6QVO8j8yVSPa6yDzlN3qVxs,520
61
+ fabricatio/workflows/__init__.py,sha256=5ScFSTA-bvhCesj3U9Mnmi6Law6N1fmh5UKyh58L3u8,51
62
+ fabricatio/__init__.py,sha256=Rmvq2VgdS2u68vnOi2i5RbeWbAwrJDbk8D8D883PJWE,1022
63
+ fabricatio/rust.cp312-win_amd64.pyd,sha256=tb9ROeE3gxqbvhiiN5aOCXsW45MoTudGZgl9ClK1sYY,4155904
64
+ fabricatio-0.2.11.data/scripts/tdown.exe,sha256=9NCl7ycobV0NptGmOEIm_mH1c5In_s5to05ZZOktsjM,3350016
65
+ fabricatio-0.2.11.dist-info/RECORD,,
@@ -1,62 +0,0 @@
1
- fabricatio-0.2.10.dev0.dist-info/METADATA,sha256=P8fqqWkcxcC1a42_I3GdmnP6qB8ZKsGoqyn4u-9yRT4,5289
2
- fabricatio-0.2.10.dev0.dist-info/WHEEL,sha256=jABKVkLC9kJr8mi_er5jOqpiQUjARSLXDUIIxDqsS50,96
3
- fabricatio-0.2.10.dev0.dist-info/licenses/LICENSE,sha256=do7J7EiCGbq0QPbMAL_FqLYufXpHnCnXBOuqVPwSV8Y,1088
4
- fabricatio/actions/article.py,sha256=C4t3hB5_k4dDrVuLzVTJIp3D6XyvvlRyGIov5-mNows,8984
5
- fabricatio/actions/article_rag.py,sha256=itGH-VCKTVFm7hrYIOOT4FyFXP8CbL042kpYNI9a2BE,4735
6
- fabricatio/actions/output.py,sha256=gkC2u_VpMJ6jOnbyRAJN24UVK7iDAMzhItYukaW8Spk,6498
7
- fabricatio/actions/rag.py,sha256=5nSih3YUkdt1uU02hSAMW6sADq9mkMOR1wDv7zIrIGQ,2737
8
- fabricatio/actions/rules.py,sha256=SNvAvQx4xUare16Za_dEpYlYI_PJNnbiO-E0XDa5JT4,2857
9
- fabricatio/actions/__init__.py,sha256=wVENCFtpVb1rLFxoOFJt9-8smLWXuJV7IwA8P3EfFz4,48
10
- fabricatio/capabilities/advanced_judge.py,sha256=selB0Gwf1F4gGJlwBiRo6gI4KOUROgh3WnzO3mZFEls,706
11
- fabricatio/capabilities/censor.py,sha256=bBT5qy-kp7fh8g4Lz3labSwxwJ60gGd_vrkc6k1cZ1U,4719
12
- fabricatio/capabilities/check.py,sha256=kYqzohhv2bZfl1aKSUt7a8snT8YEl2zgha_ZdAdMMfQ,8622
13
- fabricatio/capabilities/correct.py,sha256=W_cInqlciNEhyMK0YI53jk4EvW9uAdge90IO9OElUmA,10420
14
- fabricatio/capabilities/propose.py,sha256=hkBeSlmcTdfYWT-ph6nlbtHXBozi_JXqXlWcnBy3W78,2007
15
- fabricatio/capabilities/rag.py,sha256=eWA4lDs6lnBFCK80H1JF68yOe7oScydQekXlBs2X0OI,9396
16
- fabricatio/capabilities/rating.py,sha256=Wt_H5fA1H4XuZGIMI8pr0cp_6jnXJABlo8lfU_4Fp5A,17645
17
- fabricatio/capabilities/review.py,sha256=-EMZe0ADFPT6fPGmra16UPjJC1M3rAs6dPFdTZ88Fgg,5060
18
- fabricatio/capabilities/task.py,sha256=JahC61X233UIPsjovxJgc_yqj_BjWZJBCzJZq11M2Xk,4417
19
- fabricatio/capabilities/__init__.py,sha256=v1cHRHIJ2gxyqMLNCs6ERVcCakSasZNYzmMI4lqAcls,57
20
- fabricatio/config.py,sha256=gqhdKxoj4S0EmQKprAEWUARn7yJg-w5UJ7d7GPlyttw,17631
21
- fabricatio/constants.py,sha256=thfDuF6JEtJ5CHOnAJLfqvn5834n8ep6DH2jc6XGzQM,577
22
- fabricatio/core.py,sha256=VQ_JKgUGIy2gZ8xsTBZCdr_IP7wC5aPg0_bsOmjQ588,6458
23
- fabricatio/decorators.py,sha256=-rLj9OXRfzY2E2euLKAHNRcWXjA1teLElg4zZYdIojs,8291
24
- fabricatio/fs/curd.py,sha256=p8y0LGKgVDk-CWOlm37E6wg7RK6RCD6denKo-VsW28c,4763
25
- fabricatio/fs/readers.py,sha256=M5kojKWsJQMQpE4CBbYvas0JKmPaiaYSfWmiqJx1SP4,1884
26
- fabricatio/fs/__init__.py,sha256=PCf0s_9KDjVfNw7AfPoJzGt3jMq4gJOfbcT4pb0D0ZY,588
27
- fabricatio/journal.py,sha256=stnEP88aUBA_GmU9gfTF2EZI8FS2OyMLGaMSTgK4QgA,476
28
- fabricatio/models/action.py,sha256=Kfa-zojgHQ1vPoC2lQp-thTTp0oySKn7k6I4ea6iYTs,9837
29
- fabricatio/models/adv_kwargs_types.py,sha256=YojZbB7m7VHA8woYnJpkLF4zPF2aYqv__SnCMK2cG-o,2180
30
- fabricatio/models/events.py,sha256=wiirk_ASg3iXDOZU_gIimci1VZVzWE1nDmxy-hQVJ9M,4150
31
- fabricatio/models/extra/advanced_judge.py,sha256=INUl_41C8jkausDekkjnEmTwNfLCJ23TwFjq2cM23Cw,1092
32
- fabricatio/models/extra/article_base.py,sha256=DxBex4UsMAFmHmriwXkcvGIuU-WTSD4ZfzDEk-no9TA,11894
33
- fabricatio/models/extra/article_essence.py,sha256=xd6j-PDqjhrMjgUmyfk6HqkyMLu-sS9feUo0sZ3QABY,2825
34
- fabricatio/models/extra/article_main.py,sha256=zGzcf51abcWwiaX6iyi2V7upBLa-DBovnpTJj-qYLeA,7878
35
- fabricatio/models/extra/article_outline.py,sha256=w7O0SHgC7exbptWVbR62FMHAueMgBpyWKVYMGGl_oj8,1427
36
- fabricatio/models/extra/article_proposal.py,sha256=NbyjW-7UiFPtnVD9nte75re4xL2pD4qL29PpNV4Cg_M,1870
37
- fabricatio/models/extra/patches.py,sha256=_WNCxtYzzsVfUxI16vu4IqsLahLYRHdbQN9er9tqhC0,997
38
- fabricatio/models/extra/problem.py,sha256=zZEnjBW2XGRVpJpUp09f1J_w5A1zU-LhxX78AVCq9ts,7113
39
- fabricatio/models/extra/rag.py,sha256=_atfPwk3nzhiilAOC5H1WMBgTxcZvDn3qx0CVhETlZ8,2561
40
- fabricatio/models/extra/rule.py,sha256=KQQELVhCLUXhEZ35jU3WGYqKHuCYEAkn0p6pxAE-hOU,2625
41
- fabricatio/models/extra/__init__.py,sha256=XlYnS_2B9nhLhtQkjE7rvvfPmAAtXVdNi9bSDAR-Ge8,54
42
- fabricatio/models/generic.py,sha256=BS-K8Rd_1aLU9jIExtXScvzNZ-lsBCmHlaBCjNJ6g3s,30655
43
- fabricatio/models/kwargs_types.py,sha256=J4klrMVybkCWg8Fq4x27o5QSq8jmGg2XvneW66jI0Wc,4565
44
- fabricatio/models/role.py,sha256=-CRcj5_M3_ciLPzwiNn92grBmwoSLQ-n4koVZiCNTBM,2953
45
- fabricatio/models/task.py,sha256=SxWI-b5jlQcGmNsjQ2aKDyywXwGiUvCR1rgUhk-pli8,10503
46
- fabricatio/models/tool.py,sha256=jQ51g4lwTPfsMF1nbreDJtBczbxIHoXcPuLSOqHliq8,12506
47
- fabricatio/models/usages.py,sha256=VLBpNs7zfNPqROvI2IXlqsoqKYSW8L6usNwZ1HXZVOY,34339
48
- fabricatio/parser.py,sha256=qN2godNsArmb90btOMxgqlol57166DyYsV2JlU8DlHs,6532
49
- fabricatio/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
- fabricatio/rust.pyi,sha256=vSItFXKj7YG6b7gmObMo99rWztsiYj4Ji124UNJbhd0,6957
51
- fabricatio/rust_instances.py,sha256=Byeo8KHW_dJiXujJq7YPGDLBX5bHNDYbBc4sY3uubVY,313
52
- fabricatio/toolboxes/arithmetic.py,sha256=WLqhY-Pikv11Y_0SGajwZx3WhsLNpHKf9drzAqOf_nY,1369
53
- fabricatio/toolboxes/fs.py,sha256=l4L1CVxJmjw9Ld2XUpIlWfV0_Fu_2Og6d3E13I-S4aE,736
54
- fabricatio/toolboxes/__init__.py,sha256=KBJi5OG_pExscdlM7Bnt_UF43j4I3Lv6G71kPVu4KQU,395
55
- fabricatio/utils.py,sha256=uy-W5b1d8oM1UTk2IT1lLGKIn_Pmo3XU5xbahjyDESE,1710
56
- fabricatio/workflows/articles.py,sha256=ObYTFUqLUk_CzdmmnX6S7APfxcGmPFqnFr9pdjU7Z4Y,969
57
- fabricatio/workflows/rag.py,sha256=-YYp2tlE9Vtfgpg6ROpu6QVO8j8yVSPa6yDzlN3qVxs,520
58
- fabricatio/workflows/__init__.py,sha256=5ScFSTA-bvhCesj3U9Mnmi6Law6N1fmh5UKyh58L3u8,51
59
- fabricatio/__init__.py,sha256=Rmvq2VgdS2u68vnOi2i5RbeWbAwrJDbk8D8D883PJWE,1022
60
- fabricatio/rust.cp312-win_amd64.pyd,sha256=pgavk4szzu7Fdb8oC-IK3XmhB9upqwxJxkMG_Ep65eQ,2235904
61
- fabricatio-0.2.10.dev0.data/scripts/tdown.exe,sha256=hH6MCz4SZWxYNzpNzlZ3KzTM2-H_wFyxMrKie4K24Go,3364864
62
- fabricatio-0.2.10.dev0.dist-info/RECORD,,