fabricatio 0.2.8.dev1__cp312-cp312-win_amd64.whl → 0.2.8.dev3__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/_rust.cp312-win_amd64.pyd +0 -0
- fabricatio/_rust.pyi +50 -0
- fabricatio/actions/article.py +103 -65
- fabricatio/actions/article_rag.py +73 -19
- fabricatio/actions/output.py +39 -6
- fabricatio/actions/rag.py +3 -3
- fabricatio/capabilities/check.py +97 -0
- fabricatio/capabilities/correct.py +7 -6
- fabricatio/capabilities/propose.py +20 -4
- fabricatio/capabilities/rag.py +3 -2
- fabricatio/capabilities/rating.py +7 -10
- fabricatio/capabilities/review.py +18 -187
- fabricatio/capabilities/task.py +8 -9
- fabricatio/config.py +2 -0
- fabricatio/fs/curd.py +4 -0
- fabricatio/models/action.py +10 -5
- fabricatio/models/extra/advanced_judge.py +16 -9
- fabricatio/models/extra/article_base.py +53 -10
- fabricatio/models/extra/article_essence.py +47 -171
- fabricatio/models/extra/article_main.py +6 -1
- fabricatio/models/extra/article_proposal.py +19 -1
- fabricatio/models/extra/problem.py +120 -0
- fabricatio/models/extra/rule.py +23 -0
- fabricatio/models/generic.py +50 -42
- fabricatio/models/role.py +4 -1
- fabricatio/models/usages.py +8 -6
- fabricatio/models/utils.py +0 -46
- fabricatio/utils.py +54 -0
- fabricatio-0.2.8.dev3.data/scripts/tdown.exe +0 -0
- {fabricatio-0.2.8.dev1.dist-info → fabricatio-0.2.8.dev3.dist-info}/METADATA +2 -1
- fabricatio-0.2.8.dev3.dist-info/RECORD +53 -0
- fabricatio-0.2.8.dev1.data/scripts/tdown.exe +0 -0
- fabricatio-0.2.8.dev1.dist-info/RECORD +0 -49
- {fabricatio-0.2.8.dev1.dist-info → fabricatio-0.2.8.dev3.dist-info}/WHEEL +0 -0
- {fabricatio-0.2.8.dev1.dist-info → fabricatio-0.2.8.dev3.dist-info}/licenses/LICENSE +0 -0
fabricatio/models/generic.py
CHANGED
@@ -1,17 +1,20 @@
|
|
1
1
|
"""This module defines generic classes for models in the Fabricatio library."""
|
2
2
|
|
3
3
|
from abc import ABC, abstractmethod
|
4
|
+
from datetime import datetime
|
4
5
|
from pathlib import Path
|
5
6
|
from typing import Any, Callable, Dict, Iterable, List, Optional, Self, Union, final, overload
|
6
7
|
|
7
8
|
import orjson
|
9
|
+
import rtoml
|
8
10
|
from fabricatio._rust import blake3_hash
|
9
11
|
from fabricatio._rust_instances import TEMPLATE_MANAGER
|
10
12
|
from fabricatio.config import configs
|
11
13
|
from fabricatio.fs.readers import MAGIKA, safe_text_read
|
12
14
|
from fabricatio.journal import logger
|
13
|
-
from fabricatio.models.utils import ok
|
14
15
|
from fabricatio.parser import JsonCapture
|
16
|
+
from fabricatio.utils import ok
|
17
|
+
from litellm.utils import token_counter
|
15
18
|
from pydantic import (
|
16
19
|
BaseModel,
|
17
20
|
ConfigDict,
|
@@ -62,7 +65,7 @@ class Named(Base):
|
|
62
65
|
class Described(Base):
|
63
66
|
"""Class that includes a description attribute."""
|
64
67
|
|
65
|
-
description: str = Field(
|
68
|
+
description: str = Field(frozen=True)
|
66
69
|
"""The description of the object."""
|
67
70
|
|
68
71
|
|
@@ -93,16 +96,32 @@ class WithRef[T](Base):
|
|
93
96
|
@property
|
94
97
|
def referenced(self) -> T:
|
95
98
|
"""Get the referenced object."""
|
96
|
-
return ok(
|
99
|
+
return ok(
|
100
|
+
self._reference, f"`{self.__class__.__name__}`' s `_reference` field is None. Have you called `update_ref`?"
|
101
|
+
)
|
102
|
+
|
103
|
+
@overload
|
104
|
+
def update_ref[S: WithRef](self: S, reference: T) -> S: ...
|
97
105
|
|
98
|
-
|
106
|
+
@overload
|
107
|
+
def update_ref[S: WithRef](self: S, reference: "WithRef[T]") -> S: ...
|
108
|
+
|
109
|
+
@overload
|
110
|
+
def update_ref[S: WithRef](self: S, reference: None = None) -> S: ...
|
111
|
+
def update_ref[S: WithRef](self: S, reference: Union[T, "WithRef[T]", None] = None) -> S: # noqa: PYI019
|
99
112
|
"""Update the reference of the object."""
|
100
113
|
if isinstance(reference, self.__class__):
|
101
114
|
self._reference = reference.referenced
|
102
115
|
else:
|
103
|
-
self._reference = reference
|
116
|
+
self._reference = reference # pyright: ignore [reportAttributeAccessIssue]
|
104
117
|
return self
|
105
118
|
|
119
|
+
def derive[S: WithRef](self: S, reference: Any) -> S: # noqa: PYI019
|
120
|
+
"""Derive a new object from the current object."""
|
121
|
+
new = self.model_copy()
|
122
|
+
new._reference = reference
|
123
|
+
return new
|
124
|
+
|
106
125
|
|
107
126
|
class PersistentAble(Base):
|
108
127
|
"""Class that provides a method to persist the object."""
|
@@ -117,18 +136,28 @@ class PersistentAble(Base):
|
|
117
136
|
Self: The current instance of the object.
|
118
137
|
"""
|
119
138
|
p = Path(path)
|
120
|
-
out = self.
|
139
|
+
out = rtoml.dumps(self.model_dump())
|
140
|
+
|
141
|
+
# Generate a timestamp in the format YYYYMMDD_HHMMSS
|
142
|
+
timestamp = datetime.now().strftime("%Y%m%d")
|
143
|
+
|
144
|
+
# Generate the hash
|
145
|
+
file_hash = blake3_hash(out.encode())[:6]
|
146
|
+
|
147
|
+
# Construct the file name with timestamp and hash
|
148
|
+
file_name = f"{self.__class__.__name__}_{timestamp}_{file_hash}.json"
|
149
|
+
|
121
150
|
if p.is_dir():
|
122
|
-
p.joinpath(
|
123
|
-
|
124
|
-
)
|
125
|
-
|
126
|
-
|
127
|
-
p.
|
128
|
-
logger.info(f"Persisted {self} to {p.as_posix()}")
|
151
|
+
p.joinpath(file_name).write_text(out, encoding="utf-8")
|
152
|
+
else:
|
153
|
+
p.mkdir(exist_ok=True, parents=True)
|
154
|
+
p.write_text(out, encoding="utf-8")
|
155
|
+
|
156
|
+
logger.info(f"Persisted `{self.__class__.__name__}` to {p.as_posix()}")
|
129
157
|
return self
|
130
158
|
|
131
|
-
|
159
|
+
@classmethod
|
160
|
+
def from_persistent(cls, path: str | Path) -> Self:
|
132
161
|
"""Load the object from a file.
|
133
162
|
|
134
163
|
Args:
|
@@ -137,7 +166,7 @@ class PersistentAble(Base):
|
|
137
166
|
Returns:
|
138
167
|
Self: The current instance of the object.
|
139
168
|
"""
|
140
|
-
return
|
169
|
+
return cls.model_validate(rtoml.load(path))
|
141
170
|
|
142
171
|
|
143
172
|
class ModelHash(Base):
|
@@ -207,27 +236,6 @@ class WithBriefing(Named, Described):
|
|
207
236
|
"""
|
208
237
|
return f"{self.name}: {self.description}" if self.description else self.name
|
209
238
|
|
210
|
-
def _prepend_inner(self, input_text: str) -> str:
|
211
|
-
return f"# your personal briefing: \n{self.briefing}\n{input_text}"
|
212
|
-
|
213
|
-
def prepend_sys_msg[D: (Dict[str, Any], str)](self, system_msg_like: D = "") -> Dict[str, Any]:
|
214
|
-
"""Prepend the system message with the briefing.
|
215
|
-
|
216
|
-
Args:
|
217
|
-
system_msg_like (str | dict): The system message or a dictionary containing the system message.
|
218
|
-
|
219
|
-
Returns:
|
220
|
-
dict: The system message with the briefing prepended.
|
221
|
-
"""
|
222
|
-
match system_msg_like:
|
223
|
-
case dict(d):
|
224
|
-
d["system_message"] = self._prepend_inner(d.get("system_message", ""))
|
225
|
-
return d
|
226
|
-
case str(s):
|
227
|
-
return {"system_message": self._prepend_inner(s)}
|
228
|
-
case _:
|
229
|
-
raise TypeError(f"{system_msg_like} is not a dict or str")
|
230
|
-
|
231
239
|
|
232
240
|
class UnsortGenerate(GenerateJsonSchema):
|
233
241
|
"""Class that provides a reverse JSON schema of the model."""
|
@@ -308,7 +316,7 @@ class ProposedAble(CreateJsonObjPrompt, InstantiateFromString):
|
|
308
316
|
"""Class that provides a method to propose a JSON object based on the requirement."""
|
309
317
|
|
310
318
|
|
311
|
-
class ProposedUpdateAble(
|
319
|
+
class ProposedUpdateAble(ProposedAble, UpdateFrom, ABC):
|
312
320
|
"""Make the obj can be updated from the proposed obj in place."""
|
313
321
|
|
314
322
|
|
@@ -428,13 +436,13 @@ class WithDependency(Base):
|
|
428
436
|
)
|
429
437
|
|
430
438
|
|
431
|
-
class
|
439
|
+
class Vectorizable(Base):
|
432
440
|
"""Class that prepares the vectorization of the model."""
|
433
441
|
|
434
|
-
@abstractmethod
|
435
442
|
def _prepare_vectorization_inner(self) -> str:
|
436
|
-
|
443
|
+
return rtoml.dumps(self.model_dump())
|
437
444
|
|
445
|
+
@final
|
438
446
|
def prepare_vectorization(self, max_length: Optional[int] = None) -> str:
|
439
447
|
"""Prepare the vectorization of the model.
|
440
448
|
|
@@ -443,8 +451,8 @@ class PrepareVectorization(Base):
|
|
443
451
|
"""
|
444
452
|
max_length = max_length or configs.embedding.max_sequence_length
|
445
453
|
chunk = self._prepare_vectorization_inner()
|
446
|
-
if max_length and
|
447
|
-
logger.error(err := f"Chunk exceeds maximum sequence length {max_length}
|
454
|
+
if max_length and (length := token_counter(text=chunk)) > max_length:
|
455
|
+
logger.error(err := f"Chunk exceeds maximum sequence length {max_length}, got {length},see {chunk}")
|
448
456
|
raise ValueError(err)
|
449
457
|
|
450
458
|
return chunk
|
fabricatio/models/role.py
CHANGED
@@ -8,11 +8,12 @@ from fabricatio.core import env
|
|
8
8
|
from fabricatio.journal import logger
|
9
9
|
from fabricatio.models.action import WorkFlow
|
10
10
|
from fabricatio.models.events import Event
|
11
|
+
from fabricatio.models.generic import WithBriefing
|
11
12
|
from fabricatio.models.tool import ToolBox
|
12
13
|
from pydantic import Field
|
13
14
|
|
14
15
|
|
15
|
-
class Role(ProposeTask, HandleTask, Correct):
|
16
|
+
class Role(WithBriefing, ProposeTask, HandleTask, Correct):
|
16
17
|
"""Class that represents a role with a registry of events and workflows.
|
17
18
|
|
18
19
|
A Role serves as a container for workflows, managing their registration to events
|
@@ -22,6 +23,8 @@ class Role(ProposeTask, HandleTask, Correct):
|
|
22
23
|
registry: Mapping of events to workflows that handle them
|
23
24
|
toolboxes: Set of toolboxes available to this role and its workflows
|
24
25
|
"""
|
26
|
+
description:str =""
|
27
|
+
"""A brief description of the role's responsibilities and capabilities."""
|
25
28
|
|
26
29
|
registry: dict[Event | str, WorkFlow] = Field(default_factory=dict)
|
27
30
|
"""The registry of events and workflows."""
|
fabricatio/models/usages.py
CHANGED
@@ -14,8 +14,9 @@ from fabricatio.models.generic import ScopedConfig, WithBriefing
|
|
14
14
|
from fabricatio.models.kwargs_types import ChooseKwargs, EmbeddingKwargs, GenerateKwargs, LLMKwargs, ValidateKwargs
|
15
15
|
from fabricatio.models.task import Task
|
16
16
|
from fabricatio.models.tool import Tool, ToolBox
|
17
|
-
from fabricatio.models.utils import Messages
|
17
|
+
from fabricatio.models.utils import Messages
|
18
18
|
from fabricatio.parser import GenericCapture, JsonCapture
|
19
|
+
from fabricatio.utils import ok
|
19
20
|
from litellm import RateLimitError, Router, stream_chunk_builder # pyright: ignore [reportPrivateImportUsage]
|
20
21
|
from litellm.types.router import Deployment, LiteLLM_Params, ModelInfo
|
21
22
|
from litellm.types.utils import (
|
@@ -280,7 +281,7 @@ class LLMUsage(ScopedConfig):
|
|
280
281
|
question: str | List[str],
|
281
282
|
validator: Callable[[str], T | None],
|
282
283
|
default: Optional[T] = None,
|
283
|
-
max_validations: PositiveInt =
|
284
|
+
max_validations: PositiveInt = 3,
|
284
285
|
co_extractor: Optional[GenerateKwargs] = None,
|
285
286
|
**kwargs: Unpack[GenerateKwargs],
|
286
287
|
) -> Optional[T] | List[Optional[T]] | List[T] | T:
|
@@ -338,7 +339,7 @@ class LLMUsage(ScopedConfig):
|
|
338
339
|
|
339
340
|
return await (gather(*[_inner(q) for q in question]) if isinstance(question, list) else _inner(question))
|
340
341
|
|
341
|
-
async def
|
342
|
+
async def alist_str(
|
342
343
|
self, requirement: str, k: NonNegativeInt = 0, **kwargs: Unpack[ValidateKwargs[List[str]]]
|
343
344
|
) -> Optional[List[str]]:
|
344
345
|
"""Asynchronously generates a list of strings based on a given requirement.
|
@@ -360,6 +361,7 @@ class LLMUsage(ScopedConfig):
|
|
360
361
|
**kwargs,
|
361
362
|
)
|
362
363
|
|
364
|
+
|
363
365
|
async def apathstr(self, requirement: str, **kwargs: Unpack[ChooseKwargs[List[str]]]) -> Optional[List[str]]:
|
364
366
|
"""Asynchronously generates a list of strings based on a given requirement.
|
365
367
|
|
@@ -370,7 +372,7 @@ class LLMUsage(ScopedConfig):
|
|
370
372
|
Returns:
|
371
373
|
List[str]: The validated response as a list of strings.
|
372
374
|
"""
|
373
|
-
return await self.
|
375
|
+
return await self.alist_str(
|
374
376
|
TEMPLATE_MANAGER.render_template(
|
375
377
|
configs.templates.pathstr_template,
|
376
378
|
{"requirement": requirement},
|
@@ -550,8 +552,8 @@ class EmbeddingUsage(LLMUsage):
|
|
550
552
|
"""
|
551
553
|
# check seq length
|
552
554
|
max_len = self.embedding_max_sequence_length or configs.embedding.max_sequence_length
|
553
|
-
if max_len and any(
|
554
|
-
logger.error(err := f"Input text exceeds maximum sequence length {max_len}.")
|
555
|
+
if max_len and any(length:=(token_counter(text=t)) > max_len for t in input_text):
|
556
|
+
logger.error(err := f"Input text exceeds maximum sequence length {max_len}, got {length}.")
|
555
557
|
raise ValueError(err)
|
556
558
|
|
557
559
|
return await litellm.aembedding(
|
fabricatio/models/utils.py
CHANGED
@@ -4,7 +4,6 @@ from enum import Enum
|
|
4
4
|
from typing import Any, Dict, List, Literal, Optional, Self
|
5
5
|
|
6
6
|
from pydantic import BaseModel, ConfigDict, Field
|
7
|
-
from questionary import text
|
8
7
|
|
9
8
|
|
10
9
|
class Message(BaseModel):
|
@@ -147,48 +146,3 @@ class TaskStatus(Enum):
|
|
147
146
|
Cancelled = "cancelled"
|
148
147
|
|
149
148
|
|
150
|
-
async def ask_edit(
|
151
|
-
text_seq: List[str],
|
152
|
-
) -> List[str]:
|
153
|
-
"""Asks the user to edit a list of texts.
|
154
|
-
|
155
|
-
Args:
|
156
|
-
text_seq (List[str]): A list of texts to be edited.
|
157
|
-
|
158
|
-
Returns:
|
159
|
-
List[str]: A list of edited texts.
|
160
|
-
If the user does not edit a text, it will not be included in the returned list.
|
161
|
-
"""
|
162
|
-
res = []
|
163
|
-
for i, t in enumerate(text_seq):
|
164
|
-
edited = await text(f"[{i}] ", default=t).ask_async()
|
165
|
-
if edited:
|
166
|
-
res.append(edited)
|
167
|
-
return res
|
168
|
-
|
169
|
-
|
170
|
-
def override_kwargs[T](kwargs: Dict[str, T], **overrides) -> Dict[str, T]:
|
171
|
-
"""Override the values in kwargs with the provided overrides."""
|
172
|
-
kwargs.update({k: v for k, v in overrides.items() if v is not None})
|
173
|
-
return kwargs
|
174
|
-
|
175
|
-
|
176
|
-
def fallback_kwargs[T](kwargs: Dict[str, T], **overrides) -> Dict[str, T]:
|
177
|
-
"""Fallback the values in kwargs with the provided overrides."""
|
178
|
-
kwargs.update({k: v for k, v in overrides.items() if k not in kwargs})
|
179
|
-
return kwargs
|
180
|
-
|
181
|
-
|
182
|
-
def ok[T](val: Optional[T], msg: str = "Value is None") -> T:
|
183
|
-
"""Check if a value is None and raise a ValueError with the provided message if it is.
|
184
|
-
|
185
|
-
Args:
|
186
|
-
val: The value to check.
|
187
|
-
msg: The message to include in the ValueError if val is None.
|
188
|
-
|
189
|
-
Returns:
|
190
|
-
T: The value if it is not None.
|
191
|
-
"""
|
192
|
-
if val is None:
|
193
|
-
raise ValueError(msg)
|
194
|
-
return val
|
fabricatio/utils.py
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
"""A collection of utility functions for the fabricatio package."""
|
2
|
+
|
3
|
+
from typing import Any, Dict, List, Optional
|
4
|
+
|
5
|
+
from questionary import text
|
6
|
+
|
7
|
+
|
8
|
+
async def ask_edit(
|
9
|
+
text_seq: List[str],
|
10
|
+
) -> List[str]:
|
11
|
+
"""Asks the user to edit a list of texts.
|
12
|
+
|
13
|
+
Args:
|
14
|
+
text_seq (List[str]): A list of texts to be edited.
|
15
|
+
|
16
|
+
Returns:
|
17
|
+
List[str]: A list of edited texts.
|
18
|
+
If the user does not edit a text, it will not be included in the returned list.
|
19
|
+
"""
|
20
|
+
res = []
|
21
|
+
for i, t in enumerate(text_seq):
|
22
|
+
edited = await text(f"[{i}] ", default=t).ask_async()
|
23
|
+
if edited:
|
24
|
+
res.append(edited)
|
25
|
+
return res
|
26
|
+
|
27
|
+
|
28
|
+
def override_kwargs(kwargs: Dict[str,Any], **overrides) -> Dict[str, Any]:
|
29
|
+
"""Override the values in kwargs with the provided overrides."""
|
30
|
+
new_kwargs = kwargs.copy()
|
31
|
+
new_kwargs.update({k: v for k, v in overrides.items() if v is not None})
|
32
|
+
return new_kwargs
|
33
|
+
|
34
|
+
|
35
|
+
def fallback_kwargs(kwargs: Dict[str, Any], **overrides) -> Dict[str, Any]:
|
36
|
+
"""Fallback the values in kwargs with the provided overrides."""
|
37
|
+
new_kwargs = kwargs.copy()
|
38
|
+
new_kwargs.update({k: v for k, v in overrides.items() if k not in new_kwargs and v is not None})
|
39
|
+
return new_kwargs
|
40
|
+
|
41
|
+
|
42
|
+
def ok[T](val: Optional[T], msg: str = "Value is None") -> T:
|
43
|
+
"""Check if a value is None and raise a ValueError with the provided message if it is.
|
44
|
+
|
45
|
+
Args:
|
46
|
+
val: The value to check.
|
47
|
+
msg: The message to include in the ValueError if val is None.
|
48
|
+
|
49
|
+
Returns:
|
50
|
+
T: The value if it is not None.
|
51
|
+
"""
|
52
|
+
if val is None:
|
53
|
+
raise ValueError(msg)
|
54
|
+
return val
|
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: fabricatio
|
3
|
-
Version: 0.2.8.
|
3
|
+
Version: 0.2.8.dev3
|
4
4
|
Classifier: License :: OSI Approved :: MIT License
|
5
5
|
Classifier: Programming Language :: Rust
|
6
6
|
Classifier: Programming Language :: Python :: 3.12
|
@@ -23,6 +23,7 @@ Requires-Dist: pymitter>=1.0.0
|
|
23
23
|
Requires-Dist: questionary>=2.1.0
|
24
24
|
Requires-Dist: regex>=2024.11.6
|
25
25
|
Requires-Dist: rich>=13.9.4
|
26
|
+
Requires-Dist: rtoml>=0.12.0
|
26
27
|
Requires-Dist: pymilvus>=2.5.4 ; extra == 'rag'
|
27
28
|
Requires-Dist: fabricatio[calc,plot,rag] ; extra == 'full'
|
28
29
|
Requires-Dist: sympy>=1.13.3 ; extra == 'calc'
|
@@ -0,0 +1,53 @@
|
|
1
|
+
fabricatio-0.2.8.dev3.dist-info/METADATA,sha256=dd-agw0ROR-UiBU9QvouJoQ2GCWKGev24EU51ddF1kc,5288
|
2
|
+
fabricatio-0.2.8.dev3.dist-info/WHEEL,sha256=jABKVkLC9kJr8mi_er5jOqpiQUjARSLXDUIIxDqsS50,96
|
3
|
+
fabricatio-0.2.8.dev3.dist-info/licenses/LICENSE,sha256=do7J7EiCGbq0QPbMAL_FqLYufXpHnCnXBOuqVPwSV8Y,1088
|
4
|
+
fabricatio/actions/article.py,sha256=cvUoP6a1iQklOmwPeBskJE6L5NdmF99rQEVvXOV-uR0,13733
|
5
|
+
fabricatio/actions/article_rag.py,sha256=-nFpxn2Qg1MQE6yS97P_wnSrGxJWQWlz05OX3Cdr4XE,3852
|
6
|
+
fabricatio/actions/output.py,sha256=-FfTzXEHIb_zOT-j4T4b5ND96zHLDEGdjlmmPviIbiM,3754
|
7
|
+
fabricatio/actions/rag.py,sha256=wb3vt-gS6fDHYJ57Yfu_OR0kpewT9vMqwtXsqXd42Kg,2735
|
8
|
+
fabricatio/capabilities/advanced_judge.py,sha256=selB0Gwf1F4gGJlwBiRo6gI4KOUROgh3WnzO3mZFEls,706
|
9
|
+
fabricatio/capabilities/check.py,sha256=XiA03x2lGcCzpTVICOHs-e7qzNODQwBwtjDxU8ucgdM,3915
|
10
|
+
fabricatio/capabilities/correct.py,sha256=55Zk1AzeQfoD-8k58VruGUxAMQR7q68ffGniCu6aogM,7282
|
11
|
+
fabricatio/capabilities/propose.py,sha256=hkBeSlmcTdfYWT-ph6nlbtHXBozi_JXqXlWcnBy3W78,2007
|
12
|
+
fabricatio/capabilities/rag.py,sha256=7xDxDEvhlmb7Y-mEquSgvlVIYpHsM2YFxA9LjRpVajo,17720
|
13
|
+
fabricatio/capabilities/rating.py,sha256=_PCJUeNA_1hwcP37r1GsWfHt6Gpwf8TuaAlKajUiyK8,14693
|
14
|
+
fabricatio/capabilities/review.py,sha256=1MGyJudPxHVOQod_GYKJ7NyB3jOWuwZhqBP30hAZ5Z4,5061
|
15
|
+
fabricatio/capabilities/task.py,sha256=JG9kD2n86FvZQIjqZq-aqw8j9jpuuDpEDKTJCB6HzX4,4416
|
16
|
+
fabricatio/config.py,sha256=-K3_PXAnwEDRu6OvMwbghZWeZzHKWyswWHfBeRi7cDk,17066
|
17
|
+
fabricatio/core.py,sha256=VQ_JKgUGIy2gZ8xsTBZCdr_IP7wC5aPg0_bsOmjQ588,6458
|
18
|
+
fabricatio/decorators.py,sha256=C0Gi7wcXC-0sWITqsSv3JdBGcgVJOlRvOt0FfO0aUsA,7554
|
19
|
+
fabricatio/fs/curd.py,sha256=p8y0LGKgVDk-CWOlm37E6wg7RK6RCD6denKo-VsW28c,4763
|
20
|
+
fabricatio/fs/readers.py,sha256=EZKN_AZdrp8DggJECP53QHw3uHeSDf-AwCAA_V7fNKU,1202
|
21
|
+
fabricatio/fs/__init__.py,sha256=PCf0s_9KDjVfNw7AfPoJzGt3jMq4gJOfbcT4pb0D0ZY,588
|
22
|
+
fabricatio/journal.py,sha256=stnEP88aUBA_GmU9gfTF2EZI8FS2OyMLGaMSTgK4QgA,476
|
23
|
+
fabricatio/models/action.py,sha256=N5_j7u1sd-EzuQACwPAJNUWgg328xenJ-DfZ4DOkh_s,9132
|
24
|
+
fabricatio/models/events.py,sha256=QvlnS8FEELg6KNabcJMeh2GV_y0ZBzKOPphcteKYWYU,4183
|
25
|
+
fabricatio/models/extra/advanced_judge.py,sha256=tmCD7mnPlpuykOxvXxWEk3bKzC7mUNSoOwSquT6fF7E,937
|
26
|
+
fabricatio/models/extra/article_base.py,sha256=mpetbUlZ334YAd46sqd-pBaoelozIg0XJgPWHbSdZ6k,17531
|
27
|
+
fabricatio/models/extra/article_essence.py,sha256=xd6j-PDqjhrMjgUmyfk6HqkyMLu-sS9feUo0sZ3QABY,2825
|
28
|
+
fabricatio/models/extra/article_main.py,sha256=OYOnv09n8hB8ChtCSXO9V18tt3ouoSWnG_0MsRkRzJk,8206
|
29
|
+
fabricatio/models/extra/article_outline.py,sha256=jFbVgiwlo7rnwCGS6ToVgeMUOoRe99Edgbx95THR6z8,1450
|
30
|
+
fabricatio/models/extra/article_proposal.py,sha256=L2kPvH1XCCQSNcI1KQU3ULGq7C24Y88ssugX43LgbsE,2043
|
31
|
+
fabricatio/models/extra/problem.py,sha256=CX93lMFl-UQDCO3JvD4nCMllXId_FlPwGiLpxOyO5Dc,4502
|
32
|
+
fabricatio/models/extra/rule.py,sha256=OIyn_r1lwLa-lhFsl--PQHqY_Qi2LIaT24zQSBazf38,781
|
33
|
+
fabricatio/models/generic.py,sha256=yHcYyM6NhK3tJCpPKG0lzb58y3KI3W8VtVH49FAynU0,19360
|
34
|
+
fabricatio/models/kwargs_types.py,sha256=chJ-rHaeBVRUPuORHuGR3DdNxxTUrotz0eflPEh4l4w,5474
|
35
|
+
fabricatio/models/role.py,sha256=-CRcj5_M3_ciLPzwiNn92grBmwoSLQ-n4koVZiCNTBM,2953
|
36
|
+
fabricatio/models/task.py,sha256=8NaR7ojQWyM740EDTqt9stwHKdrD6axCRpLKo0QzS-I,10492
|
37
|
+
fabricatio/models/tool.py,sha256=kD0eB7OxO9geZOxO6JIKvCBeG-KOpRAkfRZqK_WGfW4,7105
|
38
|
+
fabricatio/models/usages.py,sha256=HuU9X_8o6-UilHEy1LlszVVs36OMRKTDL07YstMFk5I,31808
|
39
|
+
fabricatio/models/utils.py,sha256=Ac5g-8ic6q_w7dhNuh-iiofpL1sqOACxbjPPTljP2LY,4417
|
40
|
+
fabricatio/parser.py,sha256=9Jzw-yV6uKbFvf6sPna-XHdziVGVBZWvPctgX_6ODL8,6251
|
41
|
+
fabricatio/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
42
|
+
fabricatio/toolboxes/arithmetic.py,sha256=WLqhY-Pikv11Y_0SGajwZx3WhsLNpHKf9drzAqOf_nY,1369
|
43
|
+
fabricatio/toolboxes/fs.py,sha256=l4L1CVxJmjw9Ld2XUpIlWfV0_Fu_2Og6d3E13I-S4aE,736
|
44
|
+
fabricatio/toolboxes/__init__.py,sha256=KBJi5OG_pExscdlM7Bnt_UF43j4I3Lv6G71kPVu4KQU,395
|
45
|
+
fabricatio/utils.py,sha256=QJR00IuclL2nNTSfpTNBRYJmNjc_DNXGtrYWjatWpq8,1681
|
46
|
+
fabricatio/workflows/articles.py,sha256=G5HGRr-DHuYuEcfhFdFAuDvTTJ9aSU_UQ2yYXEjTMtM,1047
|
47
|
+
fabricatio/workflows/rag.py,sha256=-YYp2tlE9Vtfgpg6ROpu6QVO8j8yVSPa6yDzlN3qVxs,520
|
48
|
+
fabricatio/_rust.pyi,sha256=_N8Jw1DMOFAaoibSQolxkKZ07nCfJao7Z9qkojHtLy0,5104
|
49
|
+
fabricatio/_rust_instances.py,sha256=2GwF8aVfYNemRI2feBzH1CZfBGno-XJJE5imJokGEYw,314
|
50
|
+
fabricatio/__init__.py,sha256=SzBYsRhZeL77jLtfJEjmoHOSwHwUGyvMATX6xfndLDM,1135
|
51
|
+
fabricatio/_rust.cp312-win_amd64.pyd,sha256=655GgiDLplHhewnAbEen77GKKxhllgjljHPx2q0cEps,1888256
|
52
|
+
fabricatio-0.2.8.dev3.data/scripts/tdown.exe,sha256=giKHqYYYtXEQg7gdrGBRA93R0HkoKPUoFqdyFKP9ZQM,3402752
|
53
|
+
fabricatio-0.2.8.dev3.dist-info/RECORD,,
|
Binary file
|
@@ -1,49 +0,0 @@
|
|
1
|
-
fabricatio-0.2.8.dev1.dist-info/METADATA,sha256=doJ4_NB0Ild3P3v79TzSYye8wttaYrTaoieNesBqxgw,5259
|
2
|
-
fabricatio-0.2.8.dev1.dist-info/WHEEL,sha256=jABKVkLC9kJr8mi_er5jOqpiQUjARSLXDUIIxDqsS50,96
|
3
|
-
fabricatio-0.2.8.dev1.dist-info/licenses/LICENSE,sha256=do7J7EiCGbq0QPbMAL_FqLYufXpHnCnXBOuqVPwSV8Y,1088
|
4
|
-
fabricatio/actions/article.py,sha256=l1WzphK_yR-l8KdmX6cb95vhETntrJEvMgVLBTULwJU,12074
|
5
|
-
fabricatio/actions/article_rag.py,sha256=PiOFxI6VTmLXm3BK-01g_KH1mTE9uOtnA-CwUjt16AU,1456
|
6
|
-
fabricatio/actions/output.py,sha256=eHI4EH5n1nOt6MqQ00b7UWTjIqO8FerNakem_45d5qk,2315
|
7
|
-
fabricatio/actions/rag.py,sha256=QBdzEM8MloM_ahx5pTBZAETm9_631lTe_0ih_he_Iuo,2759
|
8
|
-
fabricatio/capabilities/advanced_judge.py,sha256=selB0Gwf1F4gGJlwBiRo6gI4KOUROgh3WnzO3mZFEls,706
|
9
|
-
fabricatio/capabilities/correct.py,sha256=2093ggHkY8vQW8fl7VwXC8u39oW1xsfjxDjGoQ5puOA,7269
|
10
|
-
fabricatio/capabilities/propose.py,sha256=y3kge5g6bb8HYuV8e9h4MdqOMTlsfAIZpqE_cagWPTY,1593
|
11
|
-
fabricatio/capabilities/rag.py,sha256=XVvfH6rcog-moj1WCgwtR-l0-NdbFR6-fMQFLG7_asY,17690
|
12
|
-
fabricatio/capabilities/rating.py,sha256=j7ABxVyEnXwdKIPOIP_ysP4WP7PR1FcwjmYTkSZsVcw,14900
|
13
|
-
fabricatio/capabilities/review.py,sha256=1VBP9lNeqrTs-Whu2StpaPL2aDSrFybce8TfPJKIMjE,11376
|
14
|
-
fabricatio/capabilities/task.py,sha256=vtS0YOe639vN8iTrkP2WK0AJVCr5N_JAaJuvRGyY2Fg,4639
|
15
|
-
fabricatio/config.py,sha256=hUv5XMzOkEw8cQjsVHTpPPix52IKwmxjBsZM6Px3xZI,16915
|
16
|
-
fabricatio/core.py,sha256=VQ_JKgUGIy2gZ8xsTBZCdr_IP7wC5aPg0_bsOmjQ588,6458
|
17
|
-
fabricatio/decorators.py,sha256=C0Gi7wcXC-0sWITqsSv3JdBGcgVJOlRvOt0FfO0aUsA,7554
|
18
|
-
fabricatio/fs/curd.py,sha256=N6l2MncjrFfnXBRtteRouXp5Rjy8EAKC_i29_G-zz98,4618
|
19
|
-
fabricatio/fs/readers.py,sha256=EZKN_AZdrp8DggJECP53QHw3uHeSDf-AwCAA_V7fNKU,1202
|
20
|
-
fabricatio/fs/__init__.py,sha256=PCf0s_9KDjVfNw7AfPoJzGt3jMq4gJOfbcT4pb0D0ZY,588
|
21
|
-
fabricatio/journal.py,sha256=stnEP88aUBA_GmU9gfTF2EZI8FS2OyMLGaMSTgK4QgA,476
|
22
|
-
fabricatio/models/action.py,sha256=Rt3a9JWVhaoo7AatStzb9Gl45MKRcSeLWcOHJFCqNNM,8883
|
23
|
-
fabricatio/models/events.py,sha256=QvlnS8FEELg6KNabcJMeh2GV_y0ZBzKOPphcteKYWYU,4183
|
24
|
-
fabricatio/models/extra/advanced_judge.py,sha256=98NACWVFG01Q-tZDiMNwyQ5-RDVAZ73IVt3D9aqky4Y,574
|
25
|
-
fabricatio/models/extra/article_base.py,sha256=SRMCwtxYMkJyA7tK2GG8rFmg2UJgQV7O3qyiVwoq2MQ,15826
|
26
|
-
fabricatio/models/extra/article_essence.py,sha256=-vtI8Kua-XoAYXg82b3szT-vscrXne-zmlv2TIxWspI,9063
|
27
|
-
fabricatio/models/extra/article_main.py,sha256=N5deYozSjmAyYO8_On85NesUV0mIyTsGdHUWtR2b6q4,8087
|
28
|
-
fabricatio/models/extra/article_outline.py,sha256=jFbVgiwlo7rnwCGS6ToVgeMUOoRe99Edgbx95THR6z8,1450
|
29
|
-
fabricatio/models/extra/article_proposal.py,sha256=DWn3MQUNQlXj9Fcm3xSONyxARz8goAroJUA6pWvBhHw,1398
|
30
|
-
fabricatio/models/generic.py,sha256=nyfhgaIEsSvbDvcHrjULEgseBKRzZx2t21lfncwCsq4,19225
|
31
|
-
fabricatio/models/kwargs_types.py,sha256=chJ-rHaeBVRUPuORHuGR3DdNxxTUrotz0eflPEh4l4w,5474
|
32
|
-
fabricatio/models/role.py,sha256=mmQbJ6GKr2Gx3wtjEz8d-vYoXs09ffcEkT_eCXaDd3E,2782
|
33
|
-
fabricatio/models/task.py,sha256=8NaR7ojQWyM740EDTqt9stwHKdrD6axCRpLKo0QzS-I,10492
|
34
|
-
fabricatio/models/tool.py,sha256=kD0eB7OxO9geZOxO6JIKvCBeG-KOpRAkfRZqK_WGfW4,7105
|
35
|
-
fabricatio/models/usages.py,sha256=BZXHdm198wMOaYvCqL7wBcSzAHUMS4mYeD_VCi08mmY,31736
|
36
|
-
fabricatio/models/utils.py,sha256=yjxPZ6N7QGpGwkI_Vb28Ud3EhkdlB-tyfGRHAZMcGxs,5872
|
37
|
-
fabricatio/parser.py,sha256=9Jzw-yV6uKbFvf6sPna-XHdziVGVBZWvPctgX_6ODL8,6251
|
38
|
-
fabricatio/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
39
|
-
fabricatio/toolboxes/arithmetic.py,sha256=WLqhY-Pikv11Y_0SGajwZx3WhsLNpHKf9drzAqOf_nY,1369
|
40
|
-
fabricatio/toolboxes/fs.py,sha256=l4L1CVxJmjw9Ld2XUpIlWfV0_Fu_2Og6d3E13I-S4aE,736
|
41
|
-
fabricatio/toolboxes/__init__.py,sha256=KBJi5OG_pExscdlM7Bnt_UF43j4I3Lv6G71kPVu4KQU,395
|
42
|
-
fabricatio/workflows/articles.py,sha256=G5HGRr-DHuYuEcfhFdFAuDvTTJ9aSU_UQ2yYXEjTMtM,1047
|
43
|
-
fabricatio/workflows/rag.py,sha256=-YYp2tlE9Vtfgpg6ROpu6QVO8j8yVSPa6yDzlN3qVxs,520
|
44
|
-
fabricatio/_rust.pyi,sha256=dGTGV7viu3YAGl1cRKIWrdHPc1hlwk3_hbaDaswxdVo,3831
|
45
|
-
fabricatio/_rust_instances.py,sha256=2GwF8aVfYNemRI2feBzH1CZfBGno-XJJE5imJokGEYw,314
|
46
|
-
fabricatio/__init__.py,sha256=SzBYsRhZeL77jLtfJEjmoHOSwHwUGyvMATX6xfndLDM,1135
|
47
|
-
fabricatio/_rust.cp312-win_amd64.pyd,sha256=8WKD2UwAiWvZL9Nrl7xvYdQjVX0zNIMuINGgdxtaIHU,1830912
|
48
|
-
fabricatio-0.2.8.dev1.data/scripts/tdown.exe,sha256=8q6RV1e71w8_otae06rFwh3ESP7jxTx6mQiQMP09aJU,3399680
|
49
|
-
fabricatio-0.2.8.dev1.dist-info/RECORD,,
|
File without changes
|
File without changes
|