fabricatio 0.2.10.dev1__cp312-cp312-win_amd64.whl → 0.2.11.dev1__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.
fabricatio/parser.py CHANGED
@@ -1,12 +1,13 @@
1
1
  """A module to parse text using regular expressions."""
2
2
 
3
+ import re
4
+ from functools import lru_cache
5
+ from re import Pattern, compile
3
6
  from typing import Any, Callable, Iterable, List, Optional, Self, Tuple, Type
4
7
 
5
- import orjson
6
- import regex
8
+ import ujson
7
9
  from json_repair import repair_json
8
10
  from pydantic import BaseModel, ConfigDict, Field, PositiveInt, PrivateAttr, ValidationError
9
- from regex import Pattern, compile
10
11
 
11
12
  from fabricatio.config import configs
12
13
  from fabricatio.journal import logger
@@ -25,7 +26,7 @@ class Capture(BaseModel):
25
26
  """The target groups to capture from the pattern."""
26
27
  pattern: str = Field(frozen=True)
27
28
  """The regular expression pattern to search for."""
28
- flags: PositiveInt = Field(default=regex.DOTALL | regex.MULTILINE | regex.IGNORECASE, frozen=True)
29
+ flags: PositiveInt = Field(default=re.DOTALL | re.MULTILINE | re.IGNORECASE, frozen=True)
29
30
  """The flags to use when compiling the regular expression pattern."""
30
31
  capture_type: Optional[str] = None
31
32
  """The type of capture to perform, e.g., 'json', which is used to dispatch the fixer accordingly."""
@@ -49,7 +50,8 @@ class Capture(BaseModel):
49
50
  logger.debug("Applying json repair to text.")
50
51
  if isinstance(text, str):
51
52
  return repair_json(text, ensure_ascii=False) # pyright: ignore [reportReturnType]
52
- return [repair_json(item, ensure_ascii=False) for item in text] # pyright: ignore [reportReturnType, reportGeneralTypeIssues]
53
+ return [repair_json(item, ensure_ascii=False) for item in
54
+ text] # pyright: ignore [reportReturnType, reportGeneralTypeIssues]
53
55
  case _:
54
56
  return text # pyright: ignore [reportReturnType]
55
57
 
@@ -63,7 +65,7 @@ class Capture(BaseModel):
63
65
  str | None: The captured text if the pattern is found, otherwise None.
64
66
 
65
67
  """
66
- if (match :=self._compiled.match(text) or self._compiled.search(text) ) is None:
68
+ if (match := self._compiled.match(text) or self._compiled.search(text)) is None:
67
69
  logger.debug(f"Capture Failed {type(text)}: \n{text}")
68
70
  return None
69
71
  groups = self.fix(match.groups())
@@ -94,12 +96,12 @@ class Capture(BaseModel):
94
96
  return None
95
97
 
96
98
  def validate_with[K, T, E](
97
- self,
98
- text: str,
99
- target_type: Type[T],
100
- elements_type: Optional[Type[E]] = None,
101
- length: Optional[int] = None,
102
- deserializer: Callable[[Tuple[str, ...]], K] | Callable[[str], K] = orjson.loads,
99
+ self,
100
+ text: str,
101
+ target_type: Type[T],
102
+ elements_type: Optional[Type[E]] = None,
103
+ length: Optional[int] = None,
104
+ deserializer: Callable[[Tuple[str, ...]], K] | Callable[[str], K] = ujson.loads,
103
105
  ) -> T | None:
104
106
  """Validate the given text using the pattern.
105
107
 
@@ -124,6 +126,7 @@ class Capture(BaseModel):
124
126
  return None
125
127
 
126
128
  @classmethod
129
+ @lru_cache(32)
127
130
  def capture_code_block(cls, language: str) -> Self:
128
131
  """Capture the first occurrence of a code block in the given text.
129
132
 
@@ -136,6 +139,7 @@ class Capture(BaseModel):
136
139
  return cls(pattern=f"```{language}(.*?)```", capture_type=language)
137
140
 
138
141
  @classmethod
142
+ @lru_cache(32)
139
143
  def capture_generic_block(cls, language: str) -> Self:
140
144
  """Capture the first occurrence of a generic code block in the given text.
141
145
 
Binary file
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.
@@ -24,7 +24,7 @@ class TemplateManager:
24
24
  """
25
25
 
26
26
  def __init__(
27
- self, template_dirs: List[Path], suffix: Optional[str] = None, active_loading: Optional[bool] = None
27
+ self, template_dirs: List[Path], suffix: Optional[str] = None, active_loading: Optional[bool] = None
28
28
  ) -> None:
29
29
  """Initialize the template manager.
30
30
 
@@ -54,31 +54,48 @@ class TemplateManager:
54
54
  This refreshes the template cache, finding any new or modified templates.
55
55
  """
56
56
 
57
+ @overload
57
58
  def render_template(self, name: str, data: Dict[str, Any]) -> str:
59
+ ...
60
+
61
+ @overload
62
+ def render_template(self, name: str, data: List[Dict[str, Any]]) -> List[str]:
63
+ ...
64
+
65
+ def render_template(self, name: str, data: Dict[str, Any] | List[Dict[str, Any]]) -> str | List[str]:
58
66
  """Render a template with context data.
59
67
 
60
68
  Args:
61
69
  name: Template name (without extension)
62
- data: Context dictionary to provide variables to the template
70
+ data: Context dictionary or list of dictionaries to provide variables to the template
63
71
 
64
72
  Returns:
65
- Rendered template content as string
73
+ Rendered template content as string or list of strings
66
74
 
67
75
  Raises:
68
76
  RuntimeError: If template rendering fails
69
77
  """
70
78
 
79
+ @overload
71
80
  def render_template_raw(self, template: str, data: Dict[str, Any]) -> str:
81
+ ...
82
+
83
+ @overload
84
+ def render_template_raw(self, template: str, data: List[Dict[str, Any]]) -> List[str]:
85
+ ...
86
+
87
+ def render_template_raw(self, template: str, data: Dict[str, Any] | List[Dict[str, Any]]) -> str | List[str]:
72
88
  """Render a template with context data.
73
89
 
74
90
  Args:
75
91
  template: The template string
76
- data: Context dictionary to provide variables to the template
92
+ data: Context dictionary or list of dictionaries to provide variables to the template
77
93
 
78
94
  Returns:
79
- Rendered template content as string
95
+ Rendered template content as string or list of strings
80
96
  """
81
97
 
98
+
82
99
  def blake3_hash(content: bytes) -> str:
83
100
  """Calculate the BLAKE3 cryptographic hash of data.
84
101
 
@@ -89,9 +106,11 @@ def blake3_hash(content: bytes) -> str:
89
106
  Hex-encoded BLAKE3 hash string
90
107
  """
91
108
 
109
+
92
110
  def detect_language(string: str) -> str:
93
111
  """Detect the language of a given string."""
94
112
 
113
+
95
114
  def split_word_bounds(string: str) -> List[str]:
96
115
  """Split the string into words based on word boundaries.
97
116
 
@@ -102,6 +121,7 @@ def split_word_bounds(string: str) -> List[str]:
102
121
  A list of words extracted from the string.
103
122
  """
104
123
 
124
+
105
125
  def split_sentence_bounds(string: str) -> List[str]:
106
126
  """Split the string into sentences based on sentence boundaries.
107
127
 
@@ -112,6 +132,7 @@ def split_sentence_bounds(string: str) -> List[str]:
112
132
  A list of sentences extracted from the string.
113
133
  """
114
134
 
135
+
115
136
  def split_into_chunks(string: str, max_chunk_size: int, max_overlapping_rate: float = 0.3) -> List[str]:
116
137
  """Split the string into chunks of a specified size.
117
138
 
@@ -124,6 +145,7 @@ def split_into_chunks(string: str, max_chunk_size: int, max_overlapping_rate: fl
124
145
  A list of chunks extracted from the string.
125
146
  """
126
147
 
148
+
127
149
  def word_count(string: str) -> int:
128
150
  """Count the number of words in the string.
129
151
 
@@ -134,6 +156,100 @@ def word_count(string: str) -> int:
134
156
  The number of words in the string.
135
157
  """
136
158
 
159
+
160
+ def is_chinese(string: str) -> bool:
161
+ """Check if the given string is in Chinese."""
162
+
163
+
164
+ def is_english(string: str) -> bool:
165
+ """Check if the given string is in English."""
166
+
167
+
168
+ def is_japanese(string: str) -> bool:
169
+ """Check if the given string is in Japanese."""
170
+
171
+
172
+ def is_korean(string: str) -> bool:
173
+ """Check if the given string is in Korean."""
174
+
175
+
176
+ def is_arabic(string: str) -> bool:
177
+ """Check if the given string is in Arabic."""
178
+
179
+
180
+ def is_russian(string: str) -> bool:
181
+ """Check if the given string is in Russian."""
182
+
183
+
184
+ def is_german(string: str) -> bool:
185
+ """Check if the given string is in German."""
186
+
187
+
188
+ def is_french(string: str) -> bool:
189
+ """Check if the given string is in French."""
190
+
191
+
192
+ def is_hindi(string: str) -> bool:
193
+ """Check if the given string is in Hindi."""
194
+
195
+
196
+ def is_italian(string: str) -> bool:
197
+ """Check if the given string is in Italian."""
198
+
199
+
200
+ def is_dutch(string: str) -> bool:
201
+ """Check if the given string is in Dutch."""
202
+
203
+
204
+ def is_portuguese(string: str) -> bool:
205
+ """Check if the given string is in Portuguese."""
206
+
207
+
208
+ def is_swedish(string: str) -> bool:
209
+ """Check if the given string is in Swedish."""
210
+
211
+
212
+ def is_turkish(string: str) -> bool:
213
+ """Check if the given string is in Turkish."""
214
+
215
+
216
+ def is_vietnamese(string: str) -> bool:
217
+ """Check if the given string is in Vietnamese."""
218
+
219
+
220
+ def tex_to_typst(string: str) -> str:
221
+ """Convert TeX to Typst.
222
+
223
+ Args:
224
+ string: The input TeX string to be converted.
225
+
226
+ Returns:
227
+ The converted Typst string.
228
+ """
229
+
230
+
231
+ def convert_all_inline_tex(string: str) -> str:
232
+ """Convert all inline TeX code in the string.
233
+
234
+ Args:
235
+ string: The input string containing inline TeX code wrapped in $code$.
236
+
237
+ Returns:
238
+ The converted string with inline TeX code replaced.
239
+ """
240
+
241
+
242
+ def convert_all_block_tex(string: str) -> str:
243
+ """Convert all block TeX code in the string.
244
+
245
+ Args:
246
+ string: The input string containing block TeX code wrapped in $$code$$.
247
+
248
+ Returns:
249
+ The converted string with block TeX code replaced.
250
+ """
251
+
252
+
137
253
  class BibManager:
138
254
  """BibTeX bibliography manager for parsing and querying citation data."""
139
255
 
@@ -156,6 +272,7 @@ class BibManager:
156
272
  Returns:
157
273
  Citation key if exact match found, None otherwise
158
274
  """
275
+
159
276
  def get_cite_key_by_title_fuzzy(self, title: str) -> Optional[str]:
160
277
  """Find citation key by fuzzy title match.
161
278
 
@@ -219,6 +336,7 @@ class BibManager:
219
336
  Returns:
220
337
  Abstract if found, None otherwise
221
338
  """
339
+
222
340
  def get_title_by_key(self, key: str) -> Optional[str]:
223
341
  """Retrieve the title by citation key.
224
342
 
fabricatio/utils.py CHANGED
@@ -2,9 +2,12 @@
2
2
 
3
3
  from typing import Any, Dict, List, Mapping, Optional
4
4
 
5
- from questionary import text
5
+ from fabricatio.decorators import precheck_package
6
6
 
7
7
 
8
+ @precheck_package(
9
+ "questionary", "'questionary' is required to run this function. Have you installed `fabricatio[qa]`?."
10
+ )
8
11
  async def ask_edit(
9
12
  text_seq: List[str],
10
13
  ) -> List[str]:
@@ -17,6 +20,8 @@ async def ask_edit(
17
20
  List[str]: A list of edited texts.
18
21
  If the user does not edit a text, it will not be included in the returned list.
19
22
  """
23
+ from questionary import text
24
+
20
25
  res = []
21
26
  for i, t in enumerate(text_seq):
22
27
  edited = await text(f"[{i}] ", default=t).ask_async()
@@ -54,14 +59,17 @@ def ok[T](val: Optional[T], msg: str = "Value is None") -> T:
54
59
  return val
55
60
 
56
61
 
57
- def wrapp_in_block(string: str, title: str) -> str:
62
+ def wrapp_in_block(string: str, title: str, style: str = "-") -> str:
58
63
  """Wraps a string in a block with a title.
59
64
 
60
65
  Args:
61
66
  string: The string to wrap.
62
67
  title: The title of the block.
68
+ style: The style of the block.
63
69
 
64
70
  Returns:
65
71
  str: The wrapped string.
66
72
  """
67
- return f"--- Start of {title} ---\n{string}\n--- End of {title} ---"
73
+ return f"--- Start of {title} ---\n{string}\n--- End of {title} ---".replace("-", style)
74
+
75
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fabricatio
3
- Version: 0.2.10.dev1
3
+ Version: 0.2.11.dev1
4
4
  Classifier: License :: OSI Approved :: MIT License
5
5
  Classifier: Programming Language :: Rust
6
6
  Classifier: Programming Language :: Python :: 3.12
@@ -14,23 +14,24 @@ 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
22
+ Requires-Dist: ujson>=5.10.0
23
+ Requires-Dist: fabricatio[calc,ftd,plot,qa,rag] ; extra == 'full'
26
24
  Requires-Dist: pymilvus>=2.5.4 ; extra == 'rag'
27
- Requires-Dist: fabricatio[calc,plot,rag] ; extra == 'full'
28
25
  Requires-Dist: sympy>=1.13.3 ; extra == 'calc'
29
26
  Requires-Dist: matplotlib>=3.10.1 ; extra == 'plot'
30
- Provides-Extra: rag
27
+ Requires-Dist: questionary>=2.1.0 ; extra == 'qa'
28
+ Requires-Dist: magika>=0.6.1 ; extra == 'ftd'
31
29
  Provides-Extra: full
30
+ Provides-Extra: rag
32
31
  Provides-Extra: calc
33
32
  Provides-Extra: plot
33
+ Provides-Extra: qa
34
+ Provides-Extra: ftd
34
35
  License-File: LICENSE
35
36
  Summary: A LLM multi-agent framework.
36
37
  Keywords: ai,agents,multi-agent,llm,pyo3
@@ -47,7 +48,8 @@ Project-URL: Issues, https://github.com/Whth/fabricatio/issues
47
48
 
48
49
  ## Overview
49
50
 
50
- 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.
51
+ Fabricatio is a streamlined Python library for building LLM applications using an event-based agent structure. It
52
+ leverages Rust for performance-critical tasks, Handlebars for templating, and PyO3 for Python bindings.
51
53
 
52
54
  ## Features
53
55
 
@@ -87,6 +89,7 @@ import asyncio
87
89
  from fabricatio import Action, Role, Task, logger, WorkFlow
88
90
  from typing import Any
89
91
 
92
+
90
93
  class Hello(Action):
91
94
  name: str = "hello"
92
95
  output_key: str = "task_output"
@@ -96,6 +99,7 @@ class Hello(Action):
96
99
  logger.info("executing talk action")
97
100
  return ret
98
101
 
102
+
99
103
  async def main() -> None:
100
104
  role = Role(
101
105
  name="talker",
@@ -107,6 +111,7 @@ async def main() -> None:
107
111
  result = await task.delegate()
108
112
  logger.success(f"Result: {result}")
109
113
 
114
+
110
115
  if __name__ == "__main__":
111
116
  asyncio.run(main())
112
117
  ```
@@ -114,6 +119,7 @@ if __name__ == "__main__":
114
119
  ### Examples
115
120
 
116
121
  For various usage scenarios, refer to the following examples:
122
+
117
123
  - Simple Chat
118
124
  - Retrieval-Augmented Generation (RAG)
119
125
  - Article Extraction
@@ -161,6 +167,7 @@ max_tokens = 8192
161
167
  ## Contributing
162
168
 
163
169
  Contributions are welcome! Follow these steps:
170
+
164
171
  1. Fork the repository.
165
172
  2. Create your feature branch (`git checkout -b feature/new-feature`).
166
173
  3. Commit your changes (`git commit -am 'Add new feature'`).
@@ -174,6 +181,8 @@ Fabricatio is licensed under the MIT License. See [LICENSE](LICENSE) for details
174
181
  ## Acknowledgments
175
182
 
176
183
  Special thanks to the contributors and maintainers of:
184
+
177
185
  - [PyO3](https://github.com/PyO3/pyo3)
178
186
  - [Maturin](https://github.com/PyO3/maturin)
179
- - [Handlebars.rs](https://github.com/sunng87/handlebars-rust)
187
+ - [Handlebars.rs](https://github.com/sunng87/handlebars-rust)
188
+
@@ -1,63 +1,65 @@
1
- fabricatio-0.2.10.dev1.dist-info/METADATA,sha256=HRPFnRmPH19wYpcE1dJoL6Kltg2vewsF432CMSqV-Yg,5118
2
- fabricatio-0.2.10.dev1.dist-info/WHEEL,sha256=jABKVkLC9kJr8mi_er5jOqpiQUjARSLXDUIIxDqsS50,96
3
- fabricatio-0.2.10.dev1.dist-info/licenses/LICENSE,sha256=do7J7EiCGbq0QPbMAL_FqLYufXpHnCnXBOuqVPwSV8Y,1088
4
- fabricatio/actions/article.py,sha256=0PE-b47WvBQpa4XPwc4sMe11GY8KO71N4pui_Yrnz_I,8993
5
- fabricatio/actions/article_rag.py,sha256=79466dKS1TaT2rw5gadM1WfZoRJy07LmtoMXvfCZ2-U,5952
6
- fabricatio/actions/output.py,sha256=gkC2u_VpMJ6jOnbyRAJN24UVK7iDAMzhItYukaW8Spk,6498
7
- fabricatio/actions/rag.py,sha256=9fM4oR5B4AJNhKmWfUlNIeF4QkUntQscICNVo_zWPSA,3580
8
- fabricatio/actions/rules.py,sha256=SNvAvQx4xUare16Za_dEpYlYI_PJNnbiO-E0XDa5JT4,2857
1
+ fabricatio-0.2.11.dev1.dist-info/METADATA,sha256=GC-i85oxlfkyYU9coT5f3zIJUVGksKiKQFDJJBnAxGc,5178
2
+ fabricatio-0.2.11.dev1.dist-info/WHEEL,sha256=jABKVkLC9kJr8mi_er5jOqpiQUjARSLXDUIIxDqsS50,96
3
+ fabricatio-0.2.11.dev1.dist-info/licenses/LICENSE,sha256=do7J7EiCGbq0QPbMAL_FqLYufXpHnCnXBOuqVPwSV8Y,1088
4
+ fabricatio/actions/article.py,sha256=J2wneRmGDVzzyvsFw1Ux69Q6kI8Ty3Dty0l5eToSGX0,10237
5
+ fabricatio/actions/article_rag.py,sha256=rN-g3uQbgmMZbYtV63jOMYQ6ssOFtKbRtZGJ8ZOjXug,10710
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
9
10
  fabricatio/actions/__init__.py,sha256=wVENCFtpVb1rLFxoOFJt9-8smLWXuJV7IwA8P3EfFz4,48
10
11
  fabricatio/capabilities/advanced_judge.py,sha256=selB0Gwf1F4gGJlwBiRo6gI4KOUROgh3WnzO3mZFEls,706
11
12
  fabricatio/capabilities/censor.py,sha256=bBT5qy-kp7fh8g4Lz3labSwxwJ60gGd_vrkc6k1cZ1U,4719
12
13
  fabricatio/capabilities/check.py,sha256=kYqzohhv2bZfl1aKSUt7a8snT8YEl2zgha_ZdAdMMfQ,8622
13
14
  fabricatio/capabilities/correct.py,sha256=W_cInqlciNEhyMK0YI53jk4EvW9uAdge90IO9OElUmA,10420
15
+ fabricatio/capabilities/extract.py,sha256=PMjkWvbsv57IYT7zzd_xbIu4eQqQjpcmBtJzqlWZhHY,2495
14
16
  fabricatio/capabilities/propose.py,sha256=hkBeSlmcTdfYWT-ph6nlbtHXBozi_JXqXlWcnBy3W78,2007
15
17
  fabricatio/capabilities/rag.py,sha256=kqcunWBC6oA4P1rzIG2Xu9zqSg73H3uKPF41JJQ1HVI,9595
16
- fabricatio/capabilities/rating.py,sha256=Wt_H5fA1H4XuZGIMI8pr0cp_6jnXJABlo8lfU_4Fp5A,17645
18
+ fabricatio/capabilities/rating.py,sha256=iMtQs3H6vCjuEjiuuz4SRKMVaX7yff7MHWz-slYvi5g,17835
17
19
  fabricatio/capabilities/review.py,sha256=-EMZe0ADFPT6fPGmra16UPjJC1M3rAs6dPFdTZ88Fgg,5060
18
- fabricatio/capabilities/task.py,sha256=JahC61X233UIPsjovxJgc_yqj_BjWZJBCzJZq11M2Xk,4417
20
+ fabricatio/capabilities/task.py,sha256=uks1U-4LNCUdwdRxAbJJjMc31hOw6jlrcYriuQQfb04,4475
19
21
  fabricatio/capabilities/__init__.py,sha256=v1cHRHIJ2gxyqMLNCs6ERVcCakSasZNYzmMI4lqAcls,57
20
- fabricatio/config.py,sha256=gqhdKxoj4S0EmQKprAEWUARn7yJg-w5UJ7d7GPlyttw,17631
22
+ fabricatio/config.py,sha256=okqrVoLhvmAjmfQXlLY3js4nC_qW4v7mxoYaGO2dMQ8,17984
21
23
  fabricatio/constants.py,sha256=thfDuF6JEtJ5CHOnAJLfqvn5834n8ep6DH2jc6XGzQM,577
22
24
  fabricatio/core.py,sha256=VQ_JKgUGIy2gZ8xsTBZCdr_IP7wC5aPg0_bsOmjQ588,6458
23
- fabricatio/decorators.py,sha256=-rLj9OXRfzY2E2euLKAHNRcWXjA1teLElg4zZYdIojs,8291
25
+ fabricatio/decorators.py,sha256=nYCYnJd7s0h-jcCLqt4XLcc4fXTUIc5DFnk7gne1GOo,8453
24
26
  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/fs/readers.py,sha256=UXvcJO3UCsxHu9PPkg34Yh55Zi-miv61jD_wZQJgKRs,1751
28
+ fabricatio/fs/__init__.py,sha256=FydmlEY_3QY74r1BpGDc5lFLhE6g6gkwOAtE30Fo-aI,786
27
29
  fabricatio/journal.py,sha256=stnEP88aUBA_GmU9gfTF2EZI8FS2OyMLGaMSTgK4QgA,476
28
30
  fabricatio/models/action.py,sha256=Kfa-zojgHQ1vPoC2lQp-thTTp0oySKn7k6I4ea6iYTs,9837
29
31
  fabricatio/models/adv_kwargs_types.py,sha256=kUO-SiZtFuz5cZCmMLnJJ9tjQ4-Zd_foo6R8HQMlM5A,1950
30
32
  fabricatio/models/events.py,sha256=wiirk_ASg3iXDOZU_gIimci1VZVzWE1nDmxy-hQVJ9M,4150
31
33
  fabricatio/models/extra/advanced_judge.py,sha256=INUl_41C8jkausDekkjnEmTwNfLCJ23TwFjq2cM23Cw,1092
32
- fabricatio/models/extra/aricle_rag.py,sha256=I65Dcip3iibQdkACPF-EgYv7bSlpXB9oj8eq-R-Tjdc,4681
34
+ fabricatio/models/extra/aricle_rag.py,sha256=MYTzq_wDxMXDC7kXElQNJxX6b7w50o7LyEvkE4Yosk4,9503
33
35
  fabricatio/models/extra/article_base.py,sha256=DxBex4UsMAFmHmriwXkcvGIuU-WTSD4ZfzDEk-no9TA,11894
34
36
  fabricatio/models/extra/article_essence.py,sha256=mlIkkRMR3I1RtqiiOnmIE3Vy623L4eECumkRzryE1pw,2749
35
- fabricatio/models/extra/article_main.py,sha256=zGzcf51abcWwiaX6iyi2V7upBLa-DBovnpTJj-qYLeA,7878
37
+ fabricatio/models/extra/article_main.py,sha256=4rjev0wpI2jf52NLNatRbqFQmN6rtKaMB9iy30hSEXM,9818
36
38
  fabricatio/models/extra/article_outline.py,sha256=w7O0SHgC7exbptWVbR62FMHAueMgBpyWKVYMGGl_oj8,1427
37
39
  fabricatio/models/extra/article_proposal.py,sha256=NbyjW-7UiFPtnVD9nte75re4xL2pD4qL29PpNV4Cg_M,1870
38
40
  fabricatio/models/extra/patches.py,sha256=_WNCxtYzzsVfUxI16vu4IqsLahLYRHdbQN9er9tqhC0,997
39
- fabricatio/models/extra/problem.py,sha256=zZEnjBW2XGRVpJpUp09f1J_w5A1zU-LhxX78AVCq9ts,7113
41
+ fabricatio/models/extra/problem.py,sha256=8tTU-3giFHOi5j7NJsvH__JJyYcaGrcfsRnkzQNm0Ew,7216
40
42
  fabricatio/models/extra/rag.py,sha256=RMi8vhEPB0I5mVmjRLRLxYHUnm9pFhvVwysaIwmW2s0,3955
41
43
  fabricatio/models/extra/rule.py,sha256=KQQELVhCLUXhEZ35jU3WGYqKHuCYEAkn0p6pxAE-hOU,2625
42
44
  fabricatio/models/extra/__init__.py,sha256=XlYnS_2B9nhLhtQkjE7rvvfPmAAtXVdNi9bSDAR-Ge8,54
43
- fabricatio/models/generic.py,sha256=M6K4uMSy4zKoTX5LyZFB8vXw8dTR9nZqec84eE-vPfw,30643
44
- fabricatio/models/kwargs_types.py,sha256=r0fgI4ExuAc0MMsgWs8fAyaQ9Z_PRRAKTr53pPP5JYY,4747
45
+ fabricatio/models/generic.py,sha256=7wcG01DN9g4q1DJGZsTUxSTMixQgwXX0xlX4HbbLc6U,31185
46
+ fabricatio/models/kwargs_types.py,sha256=GEw75ZiiDEFx_ImhCBENnPF7K0BcdTQ1ocH5jSPwMRs,4774
45
47
  fabricatio/models/role.py,sha256=-CRcj5_M3_ciLPzwiNn92grBmwoSLQ-n4koVZiCNTBM,2953
46
48
  fabricatio/models/task.py,sha256=SxWI-b5jlQcGmNsjQ2aKDyywXwGiUvCR1rgUhk-pli8,10503
47
49
  fabricatio/models/tool.py,sha256=jQ51g4lwTPfsMF1nbreDJtBczbxIHoXcPuLSOqHliq8,12506
48
- fabricatio/models/usages.py,sha256=VLBpNs7zfNPqROvI2IXlqsoqKYSW8L6usNwZ1HXZVOY,34339
49
- fabricatio/parser.py,sha256=qN2godNsArmb90btOMxgqlol57166DyYsV2JlU8DlHs,6532
50
+ fabricatio/models/usages.py,sha256=B9kII7wP9uUj6-M69kbnTsWQpZcJ-gKZ2HplIxL0j1c,33358
51
+ fabricatio/parser.py,sha256=-RbW2yzfJiu2ARq-lZw4tfgsjY2rIZWtJpoUmaE6gJQ,6637
50
52
  fabricatio/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
- fabricatio/rust.pyi,sha256=uVHcjDkG4gPcWX_7pxJXHroamY6Db46tQci96THbwJs,7280
53
+ fabricatio/rust.pyi,sha256=g-lfJY5-5kLRNUFHXPHdf539RaTErm1r29HlHAvs8hs,10091
52
54
  fabricatio/rust_instances.py,sha256=Byeo8KHW_dJiXujJq7YPGDLBX5bHNDYbBc4sY3uubVY,313
53
55
  fabricatio/toolboxes/arithmetic.py,sha256=WLqhY-Pikv11Y_0SGajwZx3WhsLNpHKf9drzAqOf_nY,1369
54
56
  fabricatio/toolboxes/fs.py,sha256=l4L1CVxJmjw9Ld2XUpIlWfV0_Fu_2Og6d3E13I-S4aE,736
55
57
  fabricatio/toolboxes/__init__.py,sha256=KBJi5OG_pExscdlM7Bnt_UF43j4I3Lv6G71kPVu4KQU,395
56
- fabricatio/utils.py,sha256=PKb2yfAe7iRwGJklLB5uZWuWhT0Tm47iHAqPo-zl5CQ,2039
58
+ fabricatio/utils.py,sha256=Fju7bvxrF2r-tGpRGuIQHvgjiifSfDYXZYdBXWtzFns,2310
57
59
  fabricatio/workflows/articles.py,sha256=ObYTFUqLUk_CzdmmnX6S7APfxcGmPFqnFr9pdjU7Z4Y,969
58
60
  fabricatio/workflows/rag.py,sha256=-YYp2tlE9Vtfgpg6ROpu6QVO8j8yVSPa6yDzlN3qVxs,520
59
61
  fabricatio/workflows/__init__.py,sha256=5ScFSTA-bvhCesj3U9Mnmi6Law6N1fmh5UKyh58L3u8,51
60
62
  fabricatio/__init__.py,sha256=Rmvq2VgdS2u68vnOi2i5RbeWbAwrJDbk8D8D883PJWE,1022
61
- fabricatio/rust.cp312-win_amd64.pyd,sha256=ql93jn1qacym6Ks927dxEGJb16rUyWPiW85fm9IE8A0,2251776
62
- fabricatio-0.2.10.dev1.data/scripts/tdown.exe,sha256=WFQ7z3utWNkccmrzZPzJTb4N0_IBWrjirdWSOKcrj_0,3365888
63
- fabricatio-0.2.10.dev1.dist-info/RECORD,,
63
+ fabricatio/rust.cp312-win_amd64.pyd,sha256=xuHK1JAwjOPlN_BojaTTIKycn8ILyBRuSUE8Mlj3qhM,4147712
64
+ fabricatio-0.2.11.dev1.data/scripts/tdown.exe,sha256=yx3AcvfP3lcjWcNlgPBXzH863MlWBnrJjqXkLoC39nk,3351040
65
+ fabricatio-0.2.11.dev1.dist-info/RECORD,,