fabricatio 0.3.14.dev0__cp312-cp312-win_amd64.whl → 0.3.14.dev2__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 (47) hide show
  1. fabricatio/__init__.py +3 -5
  2. fabricatio/actions/article.py +31 -31
  3. fabricatio/actions/article_rag.py +58 -58
  4. fabricatio/actions/output.py +58 -24
  5. fabricatio/actions/rag.py +2 -3
  6. fabricatio/capabilities/advanced_judge.py +4 -7
  7. fabricatio/capabilities/advanced_rag.py +2 -1
  8. fabricatio/capabilities/censor.py +5 -4
  9. fabricatio/capabilities/check.py +27 -27
  10. fabricatio/capabilities/correct.py +22 -22
  11. fabricatio/capabilities/extract.py +33 -33
  12. fabricatio/capabilities/persist.py +103 -0
  13. fabricatio/capabilities/propose.py +2 -2
  14. fabricatio/capabilities/rag.py +37 -37
  15. fabricatio/capabilities/rating.py +66 -70
  16. fabricatio/capabilities/review.py +12 -11
  17. fabricatio/capabilities/task.py +19 -18
  18. fabricatio/decorators.py +9 -9
  19. fabricatio/{core.py → emitter.py} +17 -19
  20. fabricatio/journal.py +2 -4
  21. fabricatio/models/action.py +10 -12
  22. fabricatio/models/extra/aricle_rag.py +15 -12
  23. fabricatio/models/extra/article_base.py +4 -5
  24. fabricatio/models/extra/article_essence.py +2 -1
  25. fabricatio/models/extra/article_main.py +12 -12
  26. fabricatio/models/extra/article_outline.py +2 -1
  27. fabricatio/models/extra/article_proposal.py +1 -1
  28. fabricatio/models/extra/rag.py +2 -2
  29. fabricatio/models/extra/rule.py +2 -1
  30. fabricatio/models/generic.py +53 -136
  31. fabricatio/models/kwargs_types.py +1 -9
  32. fabricatio/models/role.py +15 -16
  33. fabricatio/models/task.py +3 -4
  34. fabricatio/models/tool.py +4 -4
  35. fabricatio/models/usages.py +139 -146
  36. fabricatio/parser.py +59 -99
  37. fabricatio/rust.cp312-win_amd64.pyd +0 -0
  38. fabricatio/rust.pyi +40 -60
  39. fabricatio/utils.py +37 -170
  40. fabricatio-0.3.14.dev2.data/scripts/tdown.exe +0 -0
  41. {fabricatio-0.3.14.dev0.data → fabricatio-0.3.14.dev2.data}/scripts/ttm.exe +0 -0
  42. {fabricatio-0.3.14.dev0.dist-info → fabricatio-0.3.14.dev2.dist-info}/METADATA +7 -7
  43. fabricatio-0.3.14.dev2.dist-info/RECORD +64 -0
  44. fabricatio-0.3.14.dev0.data/scripts/tdown.exe +0 -0
  45. fabricatio-0.3.14.dev0.dist-info/RECORD +0 -63
  46. {fabricatio-0.3.14.dev0.dist-info → fabricatio-0.3.14.dev2.dist-info}/WHEEL +0 -0
  47. {fabricatio-0.3.14.dev0.dist-info → fabricatio-0.3.14.dev2.dist-info}/licenses/LICENSE +0 -0
fabricatio/utils.py CHANGED
@@ -1,36 +1,31 @@
1
1
  """A collection of utility functions for the fabricatio package."""
2
2
 
3
- from typing import Any, Dict, List, Mapping, Optional, TypedDict, Unpack, overload, Type, Tuple
3
+ from typing import Any, Dict, Iterable, List, Mapping, Optional, Tuple, Type, overload
4
4
 
5
5
  from fabricatio.decorators import precheck_package
6
- from fabricatio.journal import logger
7
- from fabricatio.models.kwargs_types import RerankOptions
8
6
 
9
7
 
10
8
  def is_subclass_of_base(cls: Type, base_module: str, base_name: str) -> bool:
11
9
  """Determines if the given class is a subclass of an unimported base class.
12
-
10
+
13
11
  Args:
14
12
  cls: The class to check
15
13
  base_module: The module name of the base class
16
14
  base_name: The class name of the base class
17
-
15
+
18
16
  Returns:
19
17
  bool: True if cls is a subclass of the specified base class, False otherwise
20
18
  """
21
- for ancestor in cls.__mro__:
22
- if ancestor.__module__ == base_module and ancestor.__name__ == base_name:
23
- return True
24
- return False
19
+ return any(ancestor.__module__ == base_module and ancestor.__name__ == base_name for ancestor in cls.__mro__)
25
20
 
26
21
 
27
22
  def is_subclass_of_any_base(cls: Type, bases: List[Tuple[str, str]]) -> bool:
28
23
  """Determines if the given class is a subclass of the candidate base classes.
29
-
24
+
30
25
  Args:
31
26
  cls: The class to check
32
27
  bases: A list of tuples where each tuple contains (module_name, class_name)
33
-
28
+
34
29
  Returns:
35
30
  bool: True if cls is a subclass of the specified base classes, False otherwise
36
31
  """
@@ -116,6 +111,37 @@ def ok[T](val: Optional[T], msg: str = "Value is None") -> T:
116
111
  return val
117
112
 
118
113
 
114
+ def first_available[T](iterable: Iterable[T], msg: str = "No available item found in the iterable.") -> T:
115
+ """Return the first available item in the iterable that's not None.
116
+
117
+ This function searches through the provided iterable and returns the first
118
+ item that is not None. If all items are None or the iterable is empty,
119
+ it raises a ValueError.
120
+
121
+ Args:
122
+ iterable: The iterable collection to search through.
123
+ msg: The message to include in the ValueError if no non-None item is found.
124
+
125
+ Returns:
126
+ T: The first non-None item found in the iterable.
127
+ If no non-None item is found, it raises a ValueError.
128
+
129
+ Raises:
130
+ ValueError: If no non-None item is found in the iterable.
131
+
132
+ Examples:
133
+ >>> first_available([None, None, "value", "another"])
134
+ 'value'
135
+ >>> first_available([1, 2, 3])
136
+ 1
137
+ >>> assert (first_available([None, None]))
138
+ ValueError: No available item found in the iterable.
139
+ """
140
+ if (first := next((item for item in iterable if item is not None), None)) is not None:
141
+ return first
142
+ raise ValueError(msg)
143
+
144
+
119
145
  def wrapp_in_block(string: str, title: str, style: str = "-") -> str:
120
146
  """Wraps a string in a block with a title.
121
147
 
@@ -128,162 +154,3 @@ def wrapp_in_block(string: str, title: str, style: str = "-") -> str:
128
154
  str: The wrapped string.
129
155
  """
130
156
  return f"--- Start of {title} ---\n{string}\n--- End of {title} ---".replace("-", style)
131
-
132
-
133
- class RerankResult(TypedDict):
134
- """The rerank result."""
135
-
136
- index: int
137
- score: float
138
-
139
-
140
- class RerankerAPI:
141
- """A class to interact with the /rerank API for text reranking."""
142
-
143
- def __init__(self, base_url: str) -> None:
144
- """Initialize the RerankerAPI instance.
145
-
146
- Args:
147
- base_url (str): The base URL of the TEI-deployed reranker model API.
148
- Example: "http://localhost:8000".
149
- """
150
- self.base_url = base_url.rstrip("/") # Ensure no trailing slashes
151
-
152
- @staticmethod
153
- def _map_error_code(status_code: int, error_data: Dict[str, str]) -> Exception:
154
- """Map HTTP status codes and error data to specific exceptions.
155
-
156
- Args:
157
- status_code (int): The HTTP status code returned by the API.
158
- error_data (Dict[str, str]): The error details returned by the API.
159
-
160
- Returns:
161
- Exception: A specific exception based on the error code and message.
162
- """
163
- error_message = error_data.get("error", "Unknown error")
164
-
165
- if status_code == 400:
166
- return ValueError(f"Bad request: {error_message}")
167
- if status_code == 413:
168
- return ValueError(f"Batch size error: {error_message}")
169
- if status_code == 422:
170
- return RuntimeError(f"Tokenization error: {error_message}")
171
- if status_code == 424:
172
- return RuntimeError(f"Rerank error: {error_message}")
173
- if status_code == 429:
174
- return RuntimeError(f"Model overloaded: {error_message}")
175
- return RuntimeError(f"Unexpected error ({status_code}): {error_message}")
176
-
177
- def rerank(self, query: str, texts: List[str], **kwargs: Unpack[RerankOptions]) -> List[RerankResult]:
178
- """Call the /rerank API to rerank a list of texts based on a query (synchronous).
179
-
180
- Args:
181
- query (str): The query string used for matching with the texts.
182
- texts (List[str]): A list of texts to be reranked.
183
- **kwargs (Unpack[RerankOptions]): Optional keyword arguments:
184
- - raw_scores (bool, optional): Whether to return raw scores. Defaults to False.
185
- - truncate (bool, optional): Whether to truncate the texts. Defaults to False.
186
- - truncation_direction (Literal["left", "right"], optional): Direction of truncation. Defaults to "right".
187
-
188
- Returns:
189
- List[RerankResult]: A list of dictionaries containing the reranked results.
190
- Each dictionary includes:
191
- - "index" (int): The original index of the text.
192
- - "score" (float): The relevance score.
193
-
194
- Raises:
195
- ValueError: If input parameters are invalid or the API returns a client-side error.
196
- RuntimeError: If the API call fails or returns a server-side error.
197
- """
198
- import requests
199
- # Validate inputs
200
- if not isinstance(query, str) or not query.strip():
201
- raise ValueError("Query must be a non-empty string.")
202
- if not isinstance(texts, list) or not all(isinstance(text, str) for text in texts):
203
- raise ValueError("Texts must be a list of strings.")
204
-
205
- # Construct the request payload
206
- payload = {
207
- "query": query,
208
- "texts": texts,
209
- **kwargs,
210
- }
211
-
212
- try:
213
- # Send POST request to the API
214
- response = requests.post(f"{self.base_url}/rerank", json=payload)
215
-
216
- # Handle non-200 status codes
217
- if not response.ok:
218
- error_data = None
219
- if "application/json" in response.headers.get("Content-Type", ""):
220
- error_data = response.json()
221
- else:
222
- error_data = {"error": response.text, "error_type": "unexpected_mimetype"}
223
- raise self._map_error_code(response.status_code, error_data)
224
-
225
- # Parse the JSON response
226
- data: List[RerankResult] = response.json()
227
- logger.debug(f"Rerank for `{query}` get {[s['score'] for s in data]}")
228
- return data
229
-
230
- except requests.exceptions.RequestException as e:
231
- raise RuntimeError(f"Failed to connect to the API: {e}") from e
232
-
233
- async def arerank(self, query: str, texts: List[str], **kwargs: Unpack[RerankOptions]) -> List[RerankResult]:
234
- """Call the /rerank API to rerank a list of texts based on a query (asynchronous).
235
-
236
- Args:
237
- query (str): The query string used for matching with the texts.
238
- texts (List[str]): A list of texts to be reranked.
239
- **kwargs (Unpack[RerankOptions]): Optional keyword arguments:
240
- - raw_scores (bool, optional): Whether to return raw scores. Defaults to False.
241
- - truncate (bool, optional): Whether to truncate the texts. Defaults to False.
242
- - truncation_direction (Literal["left", "right"], optional): Direction of truncation. Defaults to "right".
243
-
244
- Returns:
245
- List[RerankResult]: A list of dictionaries containing the reranked results.
246
- Each dictionary includes:
247
- - "index" (int): The original index of the text.
248
- - "score" (float): The relevance score.
249
-
250
- Raises:
251
- ValueError: If input parameters are invalid or the API returns a client-side error.
252
- RuntimeError: If the API call fails or returns a server-side error.
253
- """
254
- import aiohttp
255
-
256
- # Validate inputs
257
- if not isinstance(query, str) or not query.strip():
258
- raise ValueError("Query must be a non-empty string.")
259
- if not isinstance(texts, list) or not all(isinstance(text, str) for text in texts):
260
- raise ValueError("Texts must be a list of strings.")
261
-
262
- # Construct the request payload
263
- payload = {
264
- "query": query,
265
- "texts": texts,
266
- **kwargs,
267
- }
268
-
269
- try:
270
- # Send POST request to the API using aiohttp
271
- async with (
272
- aiohttp.ClientSession() as session,
273
- session.post(f"{self.base_url}/rerank", json=payload) as response,
274
- ):
275
- # Handle non-200 status codes
276
- if not response.ok:
277
- if "application/json" in response.headers.get("Content-Type", ""):
278
- error_data = await response.json()
279
- else:
280
- error_data = {"error": await response.text(), "error_type": "unexpected_mimetype"}
281
- raise self._map_error_code(response.status, error_data)
282
-
283
- # Parse the JSON response
284
- data: List[RerankResult] = await response.json()
285
- logger.debug(f"Rerank for `{query}` get {[s['score'] for s in data]}")
286
- return data
287
-
288
- except aiohttp.ClientError as e:
289
- raise RuntimeError(f"Failed to connect to the API: {e}") from e
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fabricatio
3
- Version: 0.3.14.dev0
3
+ Version: 0.3.14.dev2
4
4
  Classifier: License :: OSI Approved :: MIT License
5
5
  Classifier: Programming Language :: Rust
6
6
  Classifier: Programming Language :: Python :: 3.12
@@ -86,7 +86,7 @@ make bdist
86
86
 
87
87
  ```python
88
88
  import asyncio
89
- from fabricatio import Action, Role, Task, logger, WorkFlow
89
+ from fabricatio import Action, Role, Task, logger, WorkFlow, Event
90
90
  from typing import Any
91
91
 
92
92
 
@@ -101,14 +101,14 @@ class Hello(Action):
101
101
 
102
102
 
103
103
  async def main() -> None:
104
- role = Role(
104
+ Role(
105
105
  name="talker",
106
106
  description="talker role",
107
- registry={Task.pending_label: WorkFlow(name="talk", steps=(Hello,))}
107
+ registry={Event.quick_instantiate("talk"): WorkFlow(name="talk", steps=(Hello,))}
108
108
  )
109
109
 
110
- task = Task(name="say hello", goals="say hello", description="say hello to the world")
111
- result = await task.delegate()
110
+ task = Task(name="say hello", goals=["say hello"], description="say hello to the world")
111
+ result = await task.delegate("talk")
112
112
  logger.success(f"Result: {result}")
113
113
 
114
114
 
@@ -163,11 +163,11 @@ max_tokens = 8192
163
163
  ```bash
164
164
  make test
165
165
  ```
166
+
166
167
  ## TODO
167
168
 
168
169
  - Add an element based format strategy
169
170
 
170
-
171
171
  ## Contributing
172
172
 
173
173
  Contributions are welcome! Follow these steps:
@@ -0,0 +1,64 @@
1
+ fabricatio-0.3.14.dev2.dist-info/METADATA,sha256=MKj4CKYFdkLEn75ag-XpvJHS1g8NRiiDGMUhEKdDiA8,5267
2
+ fabricatio-0.3.14.dev2.dist-info/WHEEL,sha256=jABKVkLC9kJr8mi_er5jOqpiQUjARSLXDUIIxDqsS50,96
3
+ fabricatio-0.3.14.dev2.dist-info/licenses/LICENSE,sha256=do7J7EiCGbq0QPbMAL_FqLYufXpHnCnXBOuqVPwSV8Y,1088
4
+ fabricatio/actions/article.py,sha256=TPS2fOqCymKv2hK2c_WmMRMKNBkvN8M91QkB9ar8-bg,12507
5
+ fabricatio/actions/article_rag.py,sha256=e1fVh7Jph2zVD0bRAmK2dJ0BVkSEvF-FPfxUKujkn6s,18407
6
+ fabricatio/actions/fs.py,sha256=gJR14U4ln35nt8Z7OWLVAZpqGaLnED-r1Yi-lX22tkI,959
7
+ fabricatio/actions/output.py,sha256=jZL72D5uFobKNiVFapnVxBcjSNqGEThYNlCUKQvZwz8,9935
8
+ fabricatio/actions/rag.py,sha256=vgCzIfbSd3_vL3QxB12PY4h12V9Pe3sZRsWme0KC6X8,3583
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=jQ_Gsn6L8EKb6KQi3j0G0GSUz2j8D2220C1hIhrAeU8,682
12
+ fabricatio/capabilities/advanced_rag.py,sha256=DYh-imLQkjVOgKd__OEbwGzqwNeTtX_6NBGx_bCiFs8,2539
13
+ fabricatio/capabilities/censor.py,sha256=e0tHll4J_-TT8-Vn1OZ1innVZbJfx55oyGtDoEI99r8,4745
14
+ fabricatio/capabilities/check.py,sha256=6IC6F0IhYVpSf9pJ8r9lq40l_FF3qf-iJcTRWwpnkdg,8591
15
+ fabricatio/capabilities/correct.py,sha256=-JR8ZUAtagmNXepVyY679MBUyFCZwtKPjv8dANJMZiE,10403
16
+ fabricatio/capabilities/extract.py,sha256=E7CLZflWzJ6C6DVLEWysYZ_48g_-F93gZJVU56k2-XA,2523
17
+ fabricatio/capabilities/persist.py,sha256=9XnKoeZ62YjXVDpYnkbDFf62B_Mz46WVsq1dTr2Wvvc,3421
18
+ fabricatio/capabilities/propose.py,sha256=v8OiUHc8GU7Jg1zAUghYhrI-AKgmBeUvQMo22ZAOddw,2030
19
+ fabricatio/capabilities/rag.py,sha256=D5rULrQxPmp4kVLP_jBE4yal1v9N68XOgBdJqGvVHpU,10979
20
+ fabricatio/capabilities/rating.py,sha256=cm-s2YJMYcS36mR9b7XNwRQ1x0h0uWxLHCapoAORv8I,17815
21
+ fabricatio/capabilities/review.py,sha256=l06BYcQzPi7VKmWdplj9L6WvZEscZqW1Wx9OhR-UnNw,5061
22
+ fabricatio/capabilities/task.py,sha256=-b92cGi7b3B30kOSS-90_H6BjA0VF_cjc1BzPbO5MkI,4401
23
+ fabricatio/capabilities/__init__.py,sha256=v1cHRHIJ2gxyqMLNCs6ERVcCakSasZNYzmMI4lqAcls,57
24
+ fabricatio/decorators.py,sha256=OohwKgc5dUjybv70D-J2lA0C9zjUuq8-gzU5O8JPl8w,8962
25
+ fabricatio/emitter.py,sha256=n4vH6E7lcT57qVve_3hUAdfvj0mQUDkWu6iU5aNztB8,6341
26
+ fabricatio/fs/curd.py,sha256=652nHulbJ3gwt0Z3nywtPMmjhEyglDvEfc3p7ieJNNA,4777
27
+ fabricatio/fs/readers.py,sha256=UXvcJO3UCsxHu9PPkg34Yh55Zi-miv61jD_wZQJgKRs,1751
28
+ fabricatio/fs/__init__.py,sha256=USoMI_HcIr3Yc77_JQYYsXrsplYPXtFTaNB9YgFfC4s,713
29
+ fabricatio/journal.py,sha256=mnbdB1Dw-mhEKIgWlPKn7W07ssg-6dmxMXilIGQMFV8,216
30
+ fabricatio/models/action.py,sha256=JCJY27jloElrMBmSNC0tZtMjvgKJtksy2HimFqTKCOM,10082
31
+ fabricatio/models/adv_kwargs_types.py,sha256=IBV3ZcsNLvvEjO_2hBpYg_wLSpNKaMx6Ndam3qXJCw8,2097
32
+ fabricatio/models/extra/advanced_judge.py,sha256=INUl_41C8jkausDekkjnEmTwNfLCJ23TwFjq2cM23Cw,1092
33
+ fabricatio/models/extra/aricle_rag.py,sha256=fTxlQyrzyl9bLCC5Zreb71TKaJ7xiHqqyR62HXr2unQ,11935
34
+ fabricatio/models/extra/article_base.py,sha256=Hm78qqqkZpeLlt979cgGiam3LE4CussLv0nQkNC9mW8,16769
35
+ fabricatio/models/extra/article_essence.py,sha256=z3Qz6xVsB9k-K-c4Y2CoKzxZrXaUd4oyt2Mb6hGDYdg,2793
36
+ fabricatio/models/extra/article_main.py,sha256=rg0QlKKtJ7QT-gXdsRxNa7wNh99DMMB-FPNF7-vjPSQ,11255
37
+ fabricatio/models/extra/article_outline.py,sha256=P0T-1DGCzoNmQ3iQVwSmOul0nwS6qLgr0FF8jDdD7F0,1673
38
+ fabricatio/models/extra/article_proposal.py,sha256=OQIKoJkmJv0ogYVk7eGK_TOtANVYcBPA_HeV1nuG0Vo,1909
39
+ fabricatio/models/extra/patches.py,sha256=_WNCxtYzzsVfUxI16vu4IqsLahLYRHdbQN9er9tqhC0,997
40
+ fabricatio/models/extra/problem.py,sha256=8tTU-3giFHOi5j7NJsvH__JJyYcaGrcfsRnkzQNm0Ew,7216
41
+ fabricatio/models/extra/rag.py,sha256=C7ptZCuGJmT8WikjpF9KhZ0Bw-VicdB-s8EqEAgMLKE,3967
42
+ fabricatio/models/extra/rule.py,sha256=WKahNiaIp8s_l2r_FG21F_PP3_hgNm4hfSVCSFyfoBE,2669
43
+ fabricatio/models/extra/__init__.py,sha256=XlYnS_2B9nhLhtQkjE7rvvfPmAAtXVdNi9bSDAR-Ge8,54
44
+ fabricatio/models/generic.py,sha256=OJrYClooL2XnyalWTyyLgorycA1d_JNW8VqOYNDJdXc,27873
45
+ fabricatio/models/kwargs_types.py,sha256=Ik8-Oi_NmwfkvC9B8K4NsoZc_vSWV85xKCSthA1Xv_k,3403
46
+ fabricatio/models/role.py,sha256=b3zg96YKDsMBqa7SIe9LQHc-IVs2fGWqoQeRQYQIl4o,3856
47
+ fabricatio/models/task.py,sha256=XZ1l1P-iS02ZF9P8cXv8gEfJKBa17PFPNJ1SbhyhT4Q,11033
48
+ fabricatio/models/tool.py,sha256=up_sN5Y38V_2sTb7rvmsR1cTmf0ACZOftTHsy-VrkCs,12503
49
+ fabricatio/models/usages.py,sha256=CSd6XyEugkyWDSHRA0oMsJeEiwliQLsDo1V0GGmZ2og,33027
50
+ fabricatio/parser.py,sha256=dYFri9pDlsiwVpEJ-a5jmVU2nFuKN3uBHC8VsVpdEm8,4642
51
+ fabricatio/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
+ fabricatio/rust.pyi,sha256=dlssKYR2RrS9UQb9bc3y6XP7a9Clq1Qr40dzMW_vNB0,26256
53
+ fabricatio/toolboxes/arithmetic.py,sha256=WLqhY-Pikv11Y_0SGajwZx3WhsLNpHKf9drzAqOf_nY,1369
54
+ fabricatio/toolboxes/fs.py,sha256=l4L1CVxJmjw9Ld2XUpIlWfV0_Fu_2Og6d3E13I-S4aE,736
55
+ fabricatio/toolboxes/__init__.py,sha256=KBJi5OG_pExscdlM7Bnt_UF43j4I3Lv6G71kPVu4KQU,395
56
+ fabricatio/utils.py,sha256=WYhFB4tHk6jKmjZgAsYhRmg1ZvBjn4X2y4n7yz25HjE,5454
57
+ fabricatio/workflows/articles.py,sha256=ObYTFUqLUk_CzdmmnX6S7APfxcGmPFqnFr9pdjU7Z4Y,969
58
+ fabricatio/workflows/rag.py,sha256=-YYp2tlE9Vtfgpg6ROpu6QVO8j8yVSPa6yDzlN3qVxs,520
59
+ fabricatio/workflows/__init__.py,sha256=5ScFSTA-bvhCesj3U9Mnmi6Law6N1fmh5UKyh58L3u8,51
60
+ fabricatio/__init__.py,sha256=Qdc-WtYA9DTt-UvOqqWoPI-Qx3COHQhU_3GqP-dg90Q,784
61
+ fabricatio/rust.cp312-win_amd64.pyd,sha256=LsTZv5I08Epvn-E6kBX2Utllf6L0oKZ7IdSCDIAudu8,7816192
62
+ fabricatio-0.3.14.dev2.data/scripts/tdown.exe,sha256=sCHm3QOE48Cl1xCs5W25DdoodOlKW6MzGBhhIvGHiVY,3451392
63
+ fabricatio-0.3.14.dev2.data/scripts/ttm.exe,sha256=i1EXzzTgrz4HHkffE0T2Wi6rPhwuLAHwsrTYr8w0T3w,2557440
64
+ fabricatio-0.3.14.dev2.dist-info/RECORD,,
@@ -1,63 +0,0 @@
1
- fabricatio-0.3.14.dev0.dist-info/METADATA,sha256=wYdyUN-54xDS1x4TkCPzO8tQ8XZKmMOz5O33vlSWGSg,5246
2
- fabricatio-0.3.14.dev0.dist-info/WHEEL,sha256=jABKVkLC9kJr8mi_er5jOqpiQUjARSLXDUIIxDqsS50,96
3
- fabricatio-0.3.14.dev0.dist-info/licenses/LICENSE,sha256=do7J7EiCGbq0QPbMAL_FqLYufXpHnCnXBOuqVPwSV8Y,1088
4
- fabricatio/actions/article.py,sha256=vkYbzRy4SSJL73SFdgdsMfUy3nbjNFc44mu1-uPjqBo,12627
5
- fabricatio/actions/article_rag.py,sha256=Ahij8TSNvE5T1rHhJM5zNj57SaORldNj1YEHFTj0xm8,18631
6
- fabricatio/actions/fs.py,sha256=gJR14U4ln35nt8Z7OWLVAZpqGaLnED-r1Yi-lX22tkI,959
7
- fabricatio/actions/output.py,sha256=w_7xVFs7OZ8uXqFQKmuXw7Y0vWugSuN6phcVW_VnCqI,8389
8
- fabricatio/actions/rag.py,sha256=UifqC4jPpmhTrfToXkqi6ElbNxUoc2wqSMJQEubkhNU,3589
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/advanced_rag.py,sha256=FaXHGOqS4VleGSLsnC5qm4S4EBcHZLZbj8TjXRieKBs,2513
13
- fabricatio/capabilities/censor.py,sha256=bBT5qy-kp7fh8g4Lz3labSwxwJ60gGd_vrkc6k1cZ1U,4719
14
- fabricatio/capabilities/check.py,sha256=3Y7M9DLYWJefCMDg4aSYuU7XgVdWGR4ElQVeHFVYt4U,8663
15
- fabricatio/capabilities/correct.py,sha256=K-m8OZK25AjboGQXFltNk_A3WPBByi1sG_fuEHWDGFw,10445
16
- fabricatio/capabilities/extract.py,sha256=005FFcLAC_A6FNmuGK679yJtTL8ai__Zg5bjG9eiSts,2619
17
- fabricatio/capabilities/propose.py,sha256=hkBeSlmcTdfYWT-ph6nlbtHXBozi_JXqXlWcnBy3W78,2007
18
- fabricatio/capabilities/rag.py,sha256=LHSpBW6FTEgUvsIbE5HGhlRba_bRV5-kM1s8fZUc_IM,11143
19
- fabricatio/capabilities/rating.py,sha256=JdxNzjg7hQO6Cbe4Muf20r6f1Cb9dQnUBQq1VRS_bRU,18089
20
- fabricatio/capabilities/review.py,sha256=qimV-r51nqLtAcKBO0SKS_J06DYLUL-FsbZNA9JxQ9k,5060
21
- fabricatio/capabilities/task.py,sha256=mqRzrNBJEYTYbNfDPhTNy9bpDFyUpygff6FKBiNumbA,4431
22
- fabricatio/capabilities/__init__.py,sha256=v1cHRHIJ2gxyqMLNCs6ERVcCakSasZNYzmMI4lqAcls,57
23
- fabricatio/core.py,sha256=KN2Rx-j46xzCh9s2ckfXruz3lui6Q2JPV6LKwjHhkJQ,6485
24
- fabricatio/decorators.py,sha256=TGUTUuIfSV2u6Thv1kmAVXAPN_8ynP5T28R8MQw8eg0,8990
25
- fabricatio/fs/curd.py,sha256=652nHulbJ3gwt0Z3nywtPMmjhEyglDvEfc3p7ieJNNA,4777
26
- fabricatio/fs/readers.py,sha256=UXvcJO3UCsxHu9PPkg34Yh55Zi-miv61jD_wZQJgKRs,1751
27
- fabricatio/fs/__init__.py,sha256=USoMI_HcIr3Yc77_JQYYsXrsplYPXtFTaNB9YgFfC4s,713
28
- fabricatio/journal.py,sha256=I02_ntN7_WyI_m1RsHB1gEv8LfWtcVGmOqppEV8XjKI,289
29
- fabricatio/models/action.py,sha256=-XIzuE-LE38GWuj_0WdSGSQ7kVUMzXUUnfqJ-XcA20o,10084
30
- fabricatio/models/adv_kwargs_types.py,sha256=IBV3ZcsNLvvEjO_2hBpYg_wLSpNKaMx6Ndam3qXJCw8,2097
31
- fabricatio/models/extra/advanced_judge.py,sha256=INUl_41C8jkausDekkjnEmTwNfLCJ23TwFjq2cM23Cw,1092
32
- fabricatio/models/extra/aricle_rag.py,sha256=2dHQOz7Br8xpf3PTtdZmrIw49kC4_YGa89evta67LYg,11707
33
- fabricatio/models/extra/article_base.py,sha256=4veM9DNd7T54iocoLS1mP-jOPImrxACAzfsdd6A3LIU,16736
34
- fabricatio/models/extra/article_essence.py,sha256=mlIkkRMR3I1RtqiiOnmIE3Vy623L4eECumkRzryE1pw,2749
35
- fabricatio/models/extra/article_main.py,sha256=jOHJt6slBakOAdY8IDq4JPiPGXX0_g1n3ROm802UYqc,11221
36
- fabricatio/models/extra/article_outline.py,sha256=mw7eOuKMJgns4bihjcjOEIpAy38i0g-x6T6Vx3J0T5A,1629
37
- fabricatio/models/extra/article_proposal.py,sha256=NbyjW-7UiFPtnVD9nte75re4xL2pD4qL29PpNV4Cg_M,1870
38
- fabricatio/models/extra/patches.py,sha256=_WNCxtYzzsVfUxI16vu4IqsLahLYRHdbQN9er9tqhC0,997
39
- fabricatio/models/extra/problem.py,sha256=8tTU-3giFHOi5j7NJsvH__JJyYcaGrcfsRnkzQNm0Ew,7216
40
- fabricatio/models/extra/rag.py,sha256=RMi8vhEPB0I5mVmjRLRLxYHUnm9pFhvVwysaIwmW2s0,3955
41
- fabricatio/models/extra/rule.py,sha256=KQQELVhCLUXhEZ35jU3WGYqKHuCYEAkn0p6pxAE-hOU,2625
42
- fabricatio/models/extra/__init__.py,sha256=XlYnS_2B9nhLhtQkjE7rvvfPmAAtXVdNi9bSDAR-Ge8,54
43
- fabricatio/models/generic.py,sha256=c-_VogsBUbNaU11KZizCI4AzLgg5_FCRLbNYcQKHyks,30424
44
- fabricatio/models/kwargs_types.py,sha256=tDeF0B_TnumYGCKU58f-llAApn6ng_Joz8CcGq5GiLk,3619
45
- fabricatio/models/role.py,sha256=Uukgh3Nxk5N2QEnyg9CMfsngW9GSgKV_Z7nnvafUYfc,3810
46
- fabricatio/models/task.py,sha256=vOL8mzwBRMWC8R_59zh4SDXkjWuAL6WTtsAGfcxp_eE,11032
47
- fabricatio/models/tool.py,sha256=uNYVCNr9KUBWQ_KAtekGECdNPZREGJ9Aioyk4lrvtTE,12503
48
- fabricatio/models/usages.py,sha256=FyWdKAce2Am10zByISBuf_Tdd4hRnhkAxcXIzyV77LU,33474
49
- fabricatio/parser.py,sha256=QXHoJf0i9lAuaUjPBltXXvDZqyeuPwDLdQgr1uMU95w,6633
50
- fabricatio/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
- fabricatio/rust.pyi,sha256=fWK5q3b-TEDfSYQh9vlZq-kTpA9NBXttGszPMVEnODs,25221
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=_kNYzLzBudhjZ3RwgeIPKSxKbOVMgCwoj-BzjYPB0G8,11566
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=QoZ1WNvK5UVaMGed2GOE781TvF76om3LHe5eVEBSSUE,809
60
- fabricatio/rust.cp312-win_amd64.pyd,sha256=lvRcjPuXO8XglnZ9J7QX4AJx1z7Zfj13Msia4orfs-A,6022144
61
- fabricatio-0.3.14.dev0.data/scripts/tdown.exe,sha256=dNcSMR1zfpD8t_QYEP0xfqCfEZZ1P1EBWYOxroxTWSU,3356160
62
- fabricatio-0.3.14.dev0.data/scripts/ttm.exe,sha256=Q4kRd27t8Fv--kYuoHqhK0NyvFt2jCY8Q11vrWDa2z0,2554880
63
- fabricatio-0.3.14.dev0.dist-info/RECORD,,