fabricatio 0.2.7.dev5__cp312-cp312-win_amd64.whl → 0.2.8.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.
@@ -1,45 +1,28 @@
1
1
  """A module containing the ArticleOutline class, which represents the outline of an academic paper."""
2
2
 
3
- from typing import Generator, List, Optional, Self, Tuple, Union, override
3
+ from typing import Dict
4
4
 
5
- import regex
6
5
  from fabricatio.models.extra.article_base import (
7
6
  ArticleBase,
8
- ArticleOutlineBase,
9
7
  ChapterBase,
10
8
  SectionBase,
11
9
  SubSectionBase,
12
10
  )
13
11
  from fabricatio.models.extra.article_proposal import ArticleProposal
14
12
  from fabricatio.models.generic import CensoredAble, Display, PersistentAble, WithRef
15
- from fabricatio.models.utils import ok
16
13
 
17
14
 
18
- class ArticleSubsectionOutline(ArticleOutlineBase, SubSectionBase):
15
+ class ArticleSubsectionOutline(SubSectionBase):
19
16
  """Atomic research component specification for academic paper generation."""
20
17
 
21
18
 
22
-
23
- class ArticleSectionOutline(ArticleOutlineBase, SectionBase[ArticleSubsectionOutline]):
19
+ class ArticleSectionOutline(SectionBase[ArticleSubsectionOutline]):
24
20
  """A slightly more detailed research component specification for academic paper generation, Must contain subsections."""
25
21
 
26
22
 
27
- def update_from_inner(self, other: Self) -> Self:
28
- """Updates the current instance with the attributes of another instance."""
29
- super().update_from_inner(other)
30
- super(ArticleOutlineBase, self).update_from_inner(other)
31
- return self
32
-
33
-
34
- class ArticleChapterOutline(ArticleOutlineBase, ChapterBase[ArticleSectionOutline]):
23
+ class ArticleChapterOutline(ChapterBase[ArticleSectionOutline]):
35
24
  """Macro-structural unit implementing standard academic paper organization. Must contain sections."""
36
25
 
37
- def update_from_inner(self, other: Self) -> Self:
38
- """Updates the current instance with the attributes of another instance."""
39
- super().update_from_inner(other)
40
- super(ArticleOutlineBase, self).update_from_inner(other)
41
- return self
42
-
43
26
 
44
27
  class ArticleOutline(
45
28
  Display,
@@ -48,140 +31,11 @@ class ArticleOutline(
48
31
  PersistentAble,
49
32
  ArticleBase[ArticleChapterOutline],
50
33
  ):
51
- """A class representing the outline of an academic paper."""
52
-
53
- abstract: str
54
- """The abstract is a concise summary of the academic paper's main findings."""
55
-
56
- prospect: str
57
- """Consolidated research statement with four pillars:
58
- 1. Problem Identification: Current limitations
59
- 2. Methodological Response: Technical approach
60
- 3. Empirical Validation: Evaluation strategy
61
- 4. Scholarly Impact: Field contributions
62
- """
63
-
64
- title: str
65
- """Title of the academic paper."""
66
-
67
- language: str
68
- """Written language of the article. SHALL be aligned to the language of the article proposal provided."""
69
-
70
- def finalized_dump(self) -> str:
71
- """Generates standardized hierarchical markup for academic publishing systems.
72
-
73
- Implements ACL 2024 outline conventions with four-level structure:
74
- = Chapter Title (Level 1)
75
- == Section Title (Level 2)
76
- === Subsection Title (Level 3)
77
- ==== Subsubsection Title (Level 4)
78
-
79
- Returns:
80
- str: Strictly formatted outline with academic sectioning
34
+ """Outline of an academic paper, containing chapters, sections, subsections."""
81
35
 
82
- Example:
83
- = Methodology
84
- == Neural Architecture Search Framework
85
- === Differentiable Search Space
86
- ==== Constrained Optimization Parameters
87
- === Implementation Details
88
- == Evaluation Protocol
89
- """
90
- lines: List[str] = []
91
- for i, chapter in enumerate(self.chapters, 1):
92
- lines.append(f"= Chapter {i}: {chapter.title}")
93
- for j, section in enumerate(chapter.sections, 1):
94
- lines.append(f"== {i}.{j} {section.title}")
95
- for k, subsection in enumerate(section.subsections, 1):
96
- lines.append(f"=== {i}.{j}.{k} {subsection.title}")
97
- return "\n".join(lines)
98
-
99
- @override
100
- def iter_dfs(
101
- self,
102
- ) -> Generator[ArticleChapterOutline | ArticleSectionOutline | ArticleSubsectionOutline, None, None]:
103
- return super().iter_dfs()
104
- def find_illegal(self) -> Optional[Tuple[ArticleOutlineBase, str]]:
105
- """Finds the first illegal component in the outline.
106
-
107
- Returns:
108
- Tuple[ArticleOutlineBase, str]: A tuple containing the illegal component and an error message.
109
- """
110
- summary = ""
111
- for component in self.iter_dfs():
112
- for ref in component.depend_on:
113
- if not ref.deref(self):
114
- summary += f"Invalid internal reference in {component.__class__.__name__} titled `{component.title}` at `depend_on` field, because the referred {ref.referring_type} is not exists within the article, see the original obj dump: {ref.model_dump()}\n"
115
- for ref in component.support_to:
116
- if not ref.deref(self):
117
- summary += f"Invalid internal reference in {component.__class__.__name__} titled `{component.title}` at `support_to` field, because the referred {ref.referring_type} is not exists within the article, see the original obj dump: {ref.model_dump()}\n"
118
- summary += component.introspect()
119
- if summary:
120
- return component, summary
121
- return None
122
-
123
- @classmethod
124
- def from_typst_code(
125
- cls, typst_code: str, title: str = "", article_language: str = "en", prospect: str = "", abstract: str = ""
126
- ) -> "ArticleOutline":
127
- """Parses a Typst code string and creates an ArticleOutline instance."""
128
- self = cls(language=article_language, prospect=prospect, abstract=abstract, chapters=[], title=title)
129
- stack = [self] # 根节点为ArticleOutline实例
130
-
131
- for line in typst_code.splitlines():
132
- parsed = cls._parse_line(line)
133
- if not parsed:
134
- continue
135
- level, title = parsed
136
- cls._adjust_stack(stack, level)
137
- parent = stack[-1]
138
- component = cls._create_component(level, title)
139
- cls._add_to_parent(parent, component, level)
140
- stack.append(component)
141
-
142
- return self
143
-
144
- @classmethod
145
- def _parse_line(cls, line: str) -> Optional[Tuple[int, str]]:
146
- stripped = line.strip()
147
- if not stripped.startswith("="):
148
- return None
149
- match = regex.match(r"^(\=+)(.*)", stripped)
150
- if not match:
151
- return None
152
- eqs, title_part = match.groups()
153
- return len(eqs), title_part.strip()
154
-
155
- @classmethod
156
- def _adjust_stack(cls, stack: List[object], target_level: int) -> None:
157
- while len(stack) > target_level:
158
- stack.pop()
159
-
160
- @classmethod
161
- def _create_component(cls, level: int, title: str) -> ArticleOutlineBase:
162
- default_kwargs = {
163
- "writing_aim": [],
164
- "depend_on": [],
165
- "support_to": [],
166
- "description": [],
36
+ def _as_prompt_inner(self) -> Dict[str, str]:
37
+ return {
38
+ "Original Article Briefing": self.referenced.referenced,
39
+ "Original Article Proposal": self.referenced.display(),
40
+ "Original Article Outline": self.display(),
167
41
  }
168
- component_map = {
169
- 1: lambda: ArticleChapterOutline(title=title, sections=[], **default_kwargs),
170
- 2: lambda: ArticleSectionOutline(title=title, subsections=[], **default_kwargs),
171
- 3: lambda: ArticleSubsectionOutline(title=title, **default_kwargs),
172
- }
173
- return ok(component_map.get(level, lambda: None)(), "Invalid level")
174
-
175
- @classmethod
176
- def _add_to_parent(
177
- cls,
178
- parent: Union["ArticleOutline", ArticleChapterOutline, ArticleSectionOutline],
179
- component: ArticleOutlineBase,
180
- level: int,
181
- ) -> None:
182
- if level == 1 and isinstance(component, ArticleChapterOutline):
183
- parent.chapters.append(component)
184
- elif level == 2 and isinstance(component, ArticleSectionOutline): # noqa: PLR2004
185
- parent.sections.append(component)
186
- elif level == 3 and isinstance(component, ArticleSubsectionOutline): # noqa: PLR2004
187
- parent.subsections.append(component)
@@ -11,25 +11,23 @@ class ArticleProposal(CensoredAble, Display, WithRef[str], AsPrompt, PersistentA
11
11
  Guides LLM in generating comprehensive research proposals with clearly defined components.
12
12
  """
13
13
 
14
+ language: str
15
+ """The language in which the article is written. This should align with the language specified in the article briefing."""
16
+
17
+ title: str
18
+ """The title of the academic paper, formatted in Title Case."""
19
+
20
+ focused_problem: List[str]
21
+ """A list of specific research problems or questions that the paper aims to address."""
22
+
14
23
  technical_approaches: List[str]
15
- """Technical approaches"""
24
+ """A list of technical approaches or methodologies used to solve the research problems."""
16
25
 
17
26
  research_methods: List[str]
18
- """Methodological components (list of techniques/tools).
19
- Example: ['Differentiable architecture search', 'Transformer-based search space', 'Multi-lingual perplexity evaluation']"""
27
+ """A list of methodological components, including techniques and tools utilized in the research."""
20
28
 
21
29
  research_aim: List[str]
22
- """Primary research objectives (list of 2-4 measurable goals).
23
- Example: ['Develop parameter-efficient NAS framework', 'Establish cross-lingual architecture transfer metrics']"""
24
-
25
- focused_problem: List[str]
26
- """Specific research problem(s) or question(s) addressed (list of 1-3 concise statements).
27
- Example: ['NAS computational overhead in low-resource settings', 'Architecture transferability across language pairs']"""
28
-
29
- title: str
30
- """Paper title in academic style (Title Case, 8-15 words). Example: 'Exploring Neural Architecture Search for Low-Resource Machine Translation'"""
31
- language: str
32
- """Written language of the article. SHALL be aligned to the language of the article briefing provided."""
30
+ """A list of primary research objectives that the paper seeks to achieve."""
33
31
 
34
32
  def _as_prompt_inner(self) -> Dict[str, str]:
35
33
  return {"ArticleBriefing": self.referenced, "ArticleProposal": self.display()}
@@ -1,6 +1,6 @@
1
1
  """This module defines generic classes for models in the Fabricatio library."""
2
2
 
3
- from abc import abstractmethod
3
+ from abc import ABC, abstractmethod
4
4
  from pathlib import Path
5
5
  from typing import Any, Callable, Dict, Iterable, List, Optional, Self, Union, final, overload
6
6
 
@@ -108,7 +108,7 @@ class PersistentAble(Base):
108
108
  """Class that provides a method to persist the object."""
109
109
 
110
110
  def persist(self, path: str | Path) -> Self:
111
- """Persist the object to a file.
111
+ """Persist the object to a file or directory.
112
112
 
113
113
  Args:
114
114
  path (str | Path): The path to save the object.
@@ -117,7 +117,7 @@ class PersistentAble(Base):
117
117
  Self: The current instance of the object.
118
118
  """
119
119
  p = Path(path)
120
- out = self.model_dump_json()
120
+ out = self.model_dump_json(indent=1)
121
121
  if p.is_dir():
122
122
  p.joinpath(f"{self.__class__.__name__}_{blake3_hash(out.encode())[:6]}.json").write_text(
123
123
  out, encoding="utf-8"
@@ -125,6 +125,7 @@ class PersistentAble(Base):
125
125
  return self
126
126
  p.mkdir(exist_ok=True, parents=True)
127
127
  p.write_text(out, encoding="utf-8")
128
+ logger.info(f"Persisted {self} to {p.as_posix()}")
128
129
  return self
129
130
 
130
131
  def from_persistent(self, path: str | Path) -> Self:
@@ -228,20 +229,11 @@ class WithBriefing(Named, Described):
228
229
  raise TypeError(f"{system_msg_like} is not a dict or str")
229
230
 
230
231
 
231
- class ReverseGenerate(GenerateJsonSchema):
232
+ class UnsortGenerate(GenerateJsonSchema):
232
233
  """Class that provides a reverse JSON schema of the model."""
233
234
 
234
- def _sort_recursive(self, value: Any, parent_key: str | None = None) -> Any:
235
- if isinstance(value, dict):
236
- sorted_dict: dict[str, JsonSchemaValue] = {}
237
- # Reverse all keys regardless of parent_key
238
- keys = reversed(value.keys())
239
- for key in keys:
240
- sorted_dict[key] = self._sort_recursive(value[key], parent_key=key)
241
- return sorted_dict
242
- if isinstance(value, list):
243
- # Reverse list order and process each item
244
- return [self._sort_recursive(item, parent_key) for item in reversed(value)]
235
+ def sort(self, value: JsonSchemaValue, parent_key: str | None = None) -> JsonSchemaValue:
236
+ """Not sort."""
245
237
  return value
246
238
 
247
239
 
@@ -256,7 +248,7 @@ class WithFormatedJsonSchema(Base):
256
248
  str: The JSON schema of the model in a formatted string.
257
249
  """
258
250
  return orjson.dumps(
259
- cls.model_json_schema(schema_generator=ReverseGenerate),
251
+ cls.model_json_schema(schema_generator=UnsortGenerate),
260
252
  option=orjson.OPT_INDENT_2,
261
253
  ).decode()
262
254
 
@@ -316,6 +308,10 @@ class ProposedAble(CreateJsonObjPrompt, InstantiateFromString):
316
308
  """Class that provides a method to propose a JSON object based on the requirement."""
317
309
 
318
310
 
311
+ class ProposedUpdateAble(PersistentAble, UpdateFrom, ABC):
312
+ """Make the obj can be updated from the proposed obj in place."""
313
+
314
+
319
315
  class FinalizedDumpAble(Base):
320
316
  """Class that provides a method to finalize the dump of the object."""
321
317
 
@@ -1,5 +1,6 @@
1
1
  """This module contains classes that manage the usage of language models and tools in tasks."""
2
2
 
3
+ import traceback
3
4
  from asyncio import gather
4
5
  from typing import Callable, Dict, Iterable, List, Optional, Self, Sequence, Set, Type, Union, Unpack, overload
5
6
 
@@ -38,6 +39,8 @@ ROUTER = Router(
38
39
  allowed_fails=configs.routing.allowed_fails,
39
40
  retry_after=configs.routing.retry_after,
40
41
  cooldown_time=configs.routing.cooldown_time,
42
+ cache_responses=configs.cache.enabled,
43
+ cache_kwargs=configs.cache.params,
41
44
  )
42
45
 
43
46
 
@@ -135,7 +138,7 @@ class LLMUsage(ScopedConfig):
135
138
  List[Choices | StreamingChoices]: A list of choices or streaming choices from the model response.
136
139
  """
137
140
  resp = await self.aquery(
138
- messages=Messages().add_system_message(system_message).add_user_message(question),
141
+ messages=Messages().add_system_message(system_message).add_user_message(question).as_list(),
139
142
  n=n,
140
143
  **kwargs,
141
144
  )
@@ -324,6 +327,7 @@ class LLMUsage(ScopedConfig):
324
327
  continue
325
328
  except Exception as e: # noqa: BLE001
326
329
  logger.error(f"Error during validation: \n{e}")
330
+ logger.debug(traceback.format_exc())
327
331
  break
328
332
  if not kwargs.get("no_cache"):
329
333
  kwargs["no_cache"] = True
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fabricatio
3
- Version: 0.2.7.dev5
3
+ Version: 0.2.8.dev1
4
4
  Classifier: License :: OSI Approved :: MIT License
5
5
  Classifier: Programming Language :: Rust
6
6
  Classifier: Programming Language :: Python :: 3.12
@@ -1,15 +1,16 @@
1
- fabricatio-0.2.7.dev5.dist-info/METADATA,sha256=ANxpgCb6nTOneCJ-RdQ7ejNoefGzRdKyfQIvwVfCJiU,5259
2
- fabricatio-0.2.7.dev5.dist-info/WHEEL,sha256=jABKVkLC9kJr8mi_er5jOqpiQUjARSLXDUIIxDqsS50,96
3
- fabricatio-0.2.7.dev5.dist-info/licenses/LICENSE,sha256=do7J7EiCGbq0QPbMAL_FqLYufXpHnCnXBOuqVPwSV8Y,1088
4
- fabricatio/actions/article.py,sha256=cv1pyGOvgMVMaHJqVDKY6h5_u1XtVw3lzJCDFqx4aoc,8073
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
5
  fabricatio/actions/article_rag.py,sha256=PiOFxI6VTmLXm3BK-01g_KH1mTE9uOtnA-CwUjt16AU,1456
6
- fabricatio/actions/output.py,sha256=K7xsBH8MjXRH6JOy3ZO94KCQzX2jNrwPPK_rRXVkS0E,1161
6
+ fabricatio/actions/output.py,sha256=eHI4EH5n1nOt6MqQ00b7UWTjIqO8FerNakem_45d5qk,2315
7
7
  fabricatio/actions/rag.py,sha256=QBdzEM8MloM_ahx5pTBZAETm9_631lTe_0ih_he_Iuo,2759
8
- fabricatio/capabilities/correct.py,sha256=8GOU2VBPUakjG-r59SqsCgCD0QHX-l__IynCLO-ib8Q,6482
8
+ fabricatio/capabilities/advanced_judge.py,sha256=selB0Gwf1F4gGJlwBiRo6gI4KOUROgh3WnzO3mZFEls,706
9
+ fabricatio/capabilities/correct.py,sha256=2093ggHkY8vQW8fl7VwXC8u39oW1xsfjxDjGoQ5puOA,7269
9
10
  fabricatio/capabilities/propose.py,sha256=y3kge5g6bb8HYuV8e9h4MdqOMTlsfAIZpqE_cagWPTY,1593
10
11
  fabricatio/capabilities/rag.py,sha256=XVvfH6rcog-moj1WCgwtR-l0-NdbFR6-fMQFLG7_asY,17690
11
- fabricatio/capabilities/rating.py,sha256=yEPqL5_DqVMj_AH9cMvKsHdMnSbvm8dN6PaKHLsJUPQ,14904
12
- fabricatio/capabilities/review.py,sha256=uc4WV9Xu-4rXAXZ-k-32HXAgm4WMLbDRfiZdRP7Nepg,11384
12
+ fabricatio/capabilities/rating.py,sha256=j7ABxVyEnXwdKIPOIP_ysP4WP7PR1FcwjmYTkSZsVcw,14900
13
+ fabricatio/capabilities/review.py,sha256=1VBP9lNeqrTs-Whu2StpaPL2aDSrFybce8TfPJKIMjE,11376
13
14
  fabricatio/capabilities/task.py,sha256=vtS0YOe639vN8iTrkP2WK0AJVCr5N_JAaJuvRGyY2Fg,4639
14
15
  fabricatio/config.py,sha256=hUv5XMzOkEw8cQjsVHTpPPix52IKwmxjBsZM6Px3xZI,16915
15
16
  fabricatio/core.py,sha256=VQ_JKgUGIy2gZ8xsTBZCdr_IP7wC5aPg0_bsOmjQ588,6458
@@ -18,19 +19,20 @@ fabricatio/fs/curd.py,sha256=N6l2MncjrFfnXBRtteRouXp5Rjy8EAKC_i29_G-zz98,4618
18
19
  fabricatio/fs/readers.py,sha256=EZKN_AZdrp8DggJECP53QHw3uHeSDf-AwCAA_V7fNKU,1202
19
20
  fabricatio/fs/__init__.py,sha256=PCf0s_9KDjVfNw7AfPoJzGt3jMq4gJOfbcT4pb0D0ZY,588
20
21
  fabricatio/journal.py,sha256=stnEP88aUBA_GmU9gfTF2EZI8FS2OyMLGaMSTgK4QgA,476
21
- fabricatio/models/action.py,sha256=UlflniS__MMrUXglu_U3PDFAtKEjVsKEix17AT9oP3M,8769
22
+ fabricatio/models/action.py,sha256=Rt3a9JWVhaoo7AatStzb9Gl45MKRcSeLWcOHJFCqNNM,8883
22
23
  fabricatio/models/events.py,sha256=QvlnS8FEELg6KNabcJMeh2GV_y0ZBzKOPphcteKYWYU,4183
23
- fabricatio/models/extra/article_base.py,sha256=Y4ZdC1yabs7jCNKwc-P8GpAJShGJx7EcLyhXuJ194Fo,11469
24
- fabricatio/models/extra/article_essence.py,sha256=DUESuK4CGgkRvIMoJCv4l8MNp5MawRYoNOtLCrFRPXY,9229
25
- fabricatio/models/extra/article_main.py,sha256=l6HO3PajaesEET6Evd2A7OOpHRelGYr4y88JyoPmP3Y,8498
26
- fabricatio/models/extra/article_outline.py,sha256=VV6RUY7VzKwqCXoykDi-vL2nqHouOuo1Q3hLdCdNDpQ,7740
27
- fabricatio/models/extra/article_proposal.py,sha256=p0NPzqg9x6t65DZqdF52Z1P0JwP6kwo2_eP-NsXgifU,1720
28
- fabricatio/models/generic.py,sha256=yEpP4cvvmB0sDbs36pIl2KYFsnNRKq7V0m3HqoSQc7o,19492
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
29
31
  fabricatio/models/kwargs_types.py,sha256=chJ-rHaeBVRUPuORHuGR3DdNxxTUrotz0eflPEh4l4w,5474
30
32
  fabricatio/models/role.py,sha256=mmQbJ6GKr2Gx3wtjEz8d-vYoXs09ffcEkT_eCXaDd3E,2782
31
33
  fabricatio/models/task.py,sha256=8NaR7ojQWyM740EDTqt9stwHKdrD6axCRpLKo0QzS-I,10492
32
34
  fabricatio/models/tool.py,sha256=kD0eB7OxO9geZOxO6JIKvCBeG-KOpRAkfRZqK_WGfW4,7105
33
- fabricatio/models/usages.py,sha256=BSqTENSva8Flga3bPBfwuc1nHo5Z_29oYzar99NbjLM,31566
35
+ fabricatio/models/usages.py,sha256=BZXHdm198wMOaYvCqL7wBcSzAHUMS4mYeD_VCi08mmY,31736
34
36
  fabricatio/models/utils.py,sha256=yjxPZ6N7QGpGwkI_Vb28Ud3EhkdlB-tyfGRHAZMcGxs,5872
35
37
  fabricatio/parser.py,sha256=9Jzw-yV6uKbFvf6sPna-XHdziVGVBZWvPctgX_6ODL8,6251
36
38
  fabricatio/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -42,6 +44,6 @@ fabricatio/workflows/rag.py,sha256=-YYp2tlE9Vtfgpg6ROpu6QVO8j8yVSPa6yDzlN3qVxs,5
42
44
  fabricatio/_rust.pyi,sha256=dGTGV7viu3YAGl1cRKIWrdHPc1hlwk3_hbaDaswxdVo,3831
43
45
  fabricatio/_rust_instances.py,sha256=2GwF8aVfYNemRI2feBzH1CZfBGno-XJJE5imJokGEYw,314
44
46
  fabricatio/__init__.py,sha256=SzBYsRhZeL77jLtfJEjmoHOSwHwUGyvMATX6xfndLDM,1135
45
- fabricatio/_rust.cp312-win_amd64.pyd,sha256=db4DHfetEQMNh7hqmL6All-asJooQxFIIXZkoWKAx4c,1835008
46
- fabricatio-0.2.7.dev5.data/scripts/tdown.exe,sha256=xZcDsLIn9rJZcM8iDNgS-eNK4ckH5rufC6mU6I2vmOo,3399680
47
- fabricatio-0.2.7.dev5.dist-info/RECORD,,
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,,