fabricatio 0.2.6.dev4__cp39-cp39-win_amd64.whl → 0.2.6.dev6__cp39-cp39-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.
@@ -12,9 +12,9 @@ from fabricatio.models.generic import ScopedConfig, WithBriefing
12
12
  from fabricatio.models.kwargs_types import ChooseKwargs, EmbeddingKwargs, GenerateKwargs, LLMKwargs, ValidateKwargs
13
13
  from fabricatio.models.task import Task
14
14
  from fabricatio.models.tool import Tool, ToolBox
15
- from fabricatio.models.utils import Messages
15
+ from fabricatio.models.utils import Messages, ok
16
16
  from fabricatio.parser import GenericCapture, JsonCapture
17
- from litellm import Router, stream_chunk_builder
17
+ from litellm import Router, stream_chunk_builder # pyright: ignore [reportPrivateImportUsage]
18
18
  from litellm.types.router import Deployment, LiteLLM_Params, ModelInfo
19
19
  from litellm.types.utils import (
20
20
  Choices,
@@ -70,14 +70,22 @@ class LLMUsage(ScopedConfig):
70
70
  """
71
71
  # Call the underlying asynchronous completion function with the provided and default parameters
72
72
  # noinspection PyTypeChecker,PydanticTypeChecker
73
-
74
73
  return await self._deploy(
75
74
  Deployment(
76
- model_name=(m_name := kwargs.get("model") or self.llm_model or configs.llm.model),
75
+ model_name=(
76
+ m_name := ok(
77
+ kwargs.get("model") or self.llm_model or configs.llm.model, "model name is not set at any place"
78
+ )
79
+ ), # pyright: ignore [reportCallIssue]
77
80
  litellm_params=(
78
81
  p := LiteLLM_Params(
79
- api_key=(self.llm_api_key or configs.llm.api_key).get_secret_value(),
80
- api_base=(self.llm_api_endpoint or configs.llm.api_endpoint).unicode_string(),
82
+ api_key=ok(
83
+ self.llm_api_key or configs.llm.api_key, "llm api key is not set at any place"
84
+ ).get_secret_value(),
85
+ api_base=ok(
86
+ self.llm_api_endpoint or configs.llm.api_endpoint,
87
+ "llm api endpoint is not set at any place",
88
+ ).unicode_string(),
81
89
  model=m_name,
82
90
  tpm=self.llm_tpm or configs.llm.tpm,
83
91
  rpm=self.llm_rpm or configs.llm.rpm,
@@ -88,14 +96,14 @@ class LLMUsage(ScopedConfig):
88
96
  model_info=ModelInfo(id=hash(m_name + p.model_dump_json(exclude_none=True))),
89
97
  )
90
98
  ).acompletion(
91
- messages=messages,
99
+ messages=messages, # pyright: ignore [reportArgumentType]
92
100
  n=n or self.llm_generation_count or configs.llm.generation_count,
93
101
  model=m_name,
94
102
  temperature=kwargs.get("temperature") or self.llm_temperature or configs.llm.temperature,
95
103
  stop=kwargs.get("stop") or self.llm_stop_sign or configs.llm.stop_sign,
96
104
  top_p=kwargs.get("top_p") or self.llm_top_p or configs.llm.top_p,
97
105
  max_tokens=kwargs.get("max_tokens") or self.llm_max_tokens or configs.llm.max_tokens,
98
- stream=kwargs.get("stream") or self.llm_stream or configs.llm.stream,
106
+ stream=ok(kwargs.get("stream") or self.llm_stream or configs.llm.stream, "stream is not set at any place"),
99
107
  cache={
100
108
  "no-cache": kwargs.get("no_cache"),
101
109
  "no-store": kwargs.get("no_store"),
@@ -196,15 +204,15 @@ class LLMUsage(ScopedConfig):
196
204
  for q, sm in zip(q_seq, sm_seq, strict=True)
197
205
  ]
198
206
  )
199
- return [r[0].message.content for r in res]
207
+ return [r[0].message.content for r in res] # pyright: ignore [reportReturnType, reportAttributeAccessIssue]
200
208
  case (list(q_seq), str(sm)):
201
209
  res = await gather(*[self.ainvoke(n=1, question=q, system_message=sm, **kwargs) for q in q_seq])
202
- return [r[0].message.content for r in res]
210
+ return [r[0].message.content for r in res] # pyright: ignore [reportReturnType, reportAttributeAccessIssue]
203
211
  case (str(q), list(sm_seq)):
204
212
  res = await gather(*[self.ainvoke(n=1, question=q, system_message=sm, **kwargs) for sm in sm_seq])
205
- return [r[0].message.content for r in res]
213
+ return [r[0].message.content for r in res] # pyright: ignore [reportReturnType, reportAttributeAccessIssue]
206
214
  case (str(q), str(sm)):
207
- return ((await self.ainvoke(n=1, question=q, system_message=sm, **kwargs))[0]).message.content
215
+ return ((await self.ainvoke(n=1, question=q, system_message=sm, **kwargs))[0]).message.content # pyright: ignore [reportReturnType, reportAttributeAccessIssue]
208
216
  case _:
209
217
  raise RuntimeError("Should not reach here.")
210
218
 
@@ -213,8 +221,9 @@ class LLMUsage(ScopedConfig):
213
221
  self,
214
222
  question: str,
215
223
  validator: Callable[[str], T | None],
216
- default: T,
224
+ default: T = ...,
217
225
  max_validations: PositiveInt = 2,
226
+ co_extractor: Optional[GenerateKwargs] = None,
218
227
  **kwargs: Unpack[GenerateKwargs],
219
228
  ) -> T: ...
220
229
  @overload
@@ -222,8 +231,9 @@ class LLMUsage(ScopedConfig):
222
231
  self,
223
232
  question: List[str],
224
233
  validator: Callable[[str], T | None],
225
- default: T,
234
+ default: T = ...,
226
235
  max_validations: PositiveInt = 2,
236
+ co_extractor: Optional[GenerateKwargs] = None,
227
237
  **kwargs: Unpack[GenerateKwargs],
228
238
  ) -> List[T]: ...
229
239
  @overload
@@ -233,6 +243,7 @@ class LLMUsage(ScopedConfig):
233
243
  validator: Callable[[str], T | None],
234
244
  default: None = None,
235
245
  max_validations: PositiveInt = 2,
246
+ co_extractor: Optional[GenerateKwargs] = None,
236
247
  **kwargs: Unpack[GenerateKwargs],
237
248
  ) -> Optional[T]: ...
238
249
 
@@ -243,6 +254,7 @@ class LLMUsage(ScopedConfig):
243
254
  validator: Callable[[str], T | None],
244
255
  default: None = None,
245
256
  max_validations: PositiveInt = 2,
257
+ co_extractor: Optional[GenerateKwargs] = None,
246
258
  **kwargs: Unpack[GenerateKwargs],
247
259
  ) -> List[Optional[T]]: ...
248
260
 
@@ -252,6 +264,7 @@ class LLMUsage(ScopedConfig):
252
264
  validator: Callable[[str], T | None],
253
265
  default: Optional[T] = None,
254
266
  max_validations: PositiveInt = 2,
267
+ co_extractor: Optional[GenerateKwargs] = None,
255
268
  **kwargs: Unpack[GenerateKwargs],
256
269
  ) -> Optional[T] | List[Optional[T]] | List[T] | T:
257
270
  """Asynchronously asks a question and validates the response using a given validator.
@@ -261,6 +274,7 @@ class LLMUsage(ScopedConfig):
261
274
  validator (Callable[[str], T | None]): A function to validate the response.
262
275
  default (T | None): Default value to return if validation fails. Defaults to None.
263
276
  max_validations (PositiveInt): Maximum number of validation attempts. Defaults to 2.
277
+ co_extractor (Optional[GenerateKwargs]): Keyword arguments for the co-extractor, if provided will enable co-extraction.
264
278
  **kwargs (Unpack[LLMKwargs]): Additional keyword arguments for the LLM usage.
265
279
 
266
280
  Returns:
@@ -274,11 +288,29 @@ class LLMUsage(ScopedConfig):
274
288
  if (response := await self.aask(question=q, **kwargs)) and (validated := validator(response)):
275
289
  logger.debug(f"Successfully validated the response at {lap}th attempt.")
276
290
  return validated
291
+
292
+ if co_extractor and (
293
+ (
294
+ co_response := await self.aask(
295
+ question=(
296
+ TEMPLATE_MANAGER.render_template(
297
+ configs.templates.co_validation_template,
298
+ {"original_q": q, "original_a": response},
299
+ )
300
+ ),
301
+ **co_extractor,
302
+ )
303
+ )
304
+ and (validated := validator(co_response))
305
+ ):
306
+ logger.debug(f"Successfully validated the co-response at {lap}th attempt.")
307
+ return validated
277
308
  except Exception as e: # noqa: BLE001
278
309
  logger.error(f"Error during validation: \n{e}")
279
310
  break
280
- kwargs["no_cache"] = True
281
- logger.debug("Closed the cache for the next attempt")
311
+ if not kwargs.get("no_cache"):
312
+ kwargs["no_cache"] = True
313
+ logger.debug("Closed the cache for the next attempt")
282
314
  if default is None:
283
315
  logger.error(f"Failed to validate the response after {max_validations} attempts.")
284
316
  return default
@@ -290,7 +322,7 @@ class LLMUsage(ScopedConfig):
290
322
 
291
323
  async def aliststr(
292
324
  self, requirement: str, k: NonNegativeInt = 0, **kwargs: Unpack[ValidateKwargs[List[str]]]
293
- ) -> List[str]:
325
+ ) -> Optional[List[str]]:
294
326
  """Asynchronously generates a list of strings based on a given requirement.
295
327
 
296
328
  Args:
@@ -310,7 +342,7 @@ class LLMUsage(ScopedConfig):
310
342
  **kwargs,
311
343
  )
312
344
 
313
- async def apathstr(self, requirement: str, **kwargs: Unpack[ChooseKwargs[List[str]]]) -> List[str]:
345
+ async def apathstr(self, requirement: str, **kwargs: Unpack[ChooseKwargs[List[str]]]) -> Optional[List[str]]:
314
346
  """Asynchronously generates a list of strings based on a given requirement.
315
347
 
316
348
  Args:
@@ -338,7 +370,7 @@ class LLMUsage(ScopedConfig):
338
370
  Returns:
339
371
  str: The validated response as a single string.
340
372
  """
341
- return (
373
+ return ok(
342
374
  await self.apathstr(
343
375
  requirement,
344
376
  k=1,
@@ -346,7 +378,7 @@ class LLMUsage(ScopedConfig):
346
378
  )
347
379
  ).pop()
348
380
 
349
- async def ageneric_string(self, requirement: str, **kwargs: Unpack[ValidateKwargs[str]]) -> str:
381
+ async def ageneric_string(self, requirement: str, **kwargs: Unpack[ValidateKwargs[str]]) -> Optional[str]:
350
382
  """Asynchronously generates a generic string based on a given requirement.
351
383
 
352
384
  Args:
@@ -356,7 +388,7 @@ class LLMUsage(ScopedConfig):
356
388
  Returns:
357
389
  str: The generated string.
358
390
  """
359
- return await self.aask_validate(
391
+ return await self.aask_validate( # pyright: ignore [reportReturnType]
360
392
  TEMPLATE_MANAGER.render_template(
361
393
  configs.templates.generic_string_template,
362
394
  {"requirement": requirement, "language": GenericCapture.capture_type},
@@ -371,7 +403,7 @@ class LLMUsage(ScopedConfig):
371
403
  choices: List[T],
372
404
  k: NonNegativeInt = 0,
373
405
  **kwargs: Unpack[ValidateKwargs[List[T]]],
374
- ) -> List[T]:
406
+ ) -> Optional[List[T]]:
375
407
  """Asynchronously executes a multi-choice decision-making process, generating a prompt based on the instruction and options, and validates the returned selection results.
376
408
 
377
409
  Args:
@@ -436,13 +468,13 @@ class LLMUsage(ScopedConfig):
436
468
  Raises:
437
469
  ValueError: If validation fails after maximum attempts or if no valid selection is made.
438
470
  """
439
- return (
471
+ return ok(
440
472
  await self.achoose(
441
473
  instruction=instruction,
442
474
  choices=choices,
443
475
  k=1,
444
476
  **kwargs,
445
- )
477
+ ),
446
478
  )[0]
447
479
 
448
480
  async def ajudge(
@@ -499,7 +531,7 @@ class EmbeddingUsage(LLMUsage):
499
531
  """
500
532
  # check seq length
501
533
  max_len = self.embedding_max_sequence_length or configs.embedding.max_sequence_length
502
- if any(len(t) > max_len for t in input_text):
534
+ if max_len and any(len(t) > max_len for t in input_text):
503
535
  logger.error(err := f"Input text exceeds maximum sequence length {max_len}.")
504
536
  raise ValueError(err)
505
537
 
@@ -513,10 +545,10 @@ class EmbeddingUsage(LLMUsage):
513
545
  or configs.embedding.timeout
514
546
  or self.llm_timeout
515
547
  or configs.llm.timeout,
516
- api_key=(
548
+ api_key=ok(
517
549
  self.embedding_api_key or configs.embedding.api_key or self.llm_api_key or configs.llm.api_key
518
550
  ).get_secret_value(),
519
- api_base=(
551
+ api_base=ok(
520
552
  self.embedding_api_endpoint
521
553
  or configs.embedding.api_endpoint
522
554
  or self.llm_api_endpoint
@@ -565,7 +597,7 @@ class ToolBoxUsage(LLMUsage):
565
597
  self,
566
598
  task: Task,
567
599
  **kwargs: Unpack[ChooseKwargs[List[ToolBox]]],
568
- ) -> List[ToolBox]:
600
+ ) -> Optional[List[ToolBox]]:
569
601
  """Asynchronously executes a multi-choice decision-making process to choose toolboxes.
570
602
 
571
603
  Args:
@@ -590,7 +622,7 @@ class ToolBoxUsage(LLMUsage):
590
622
  task: Task,
591
623
  toolbox: ToolBox,
592
624
  **kwargs: Unpack[ChooseKwargs[List[Tool]]],
593
- ) -> List[Tool]:
625
+ ) -> Optional[List[Tool]]:
594
626
  """Asynchronously executes a multi-choice decision-making process to choose tools.
595
627
 
596
628
  Args:
@@ -630,11 +662,11 @@ class ToolBoxUsage(LLMUsage):
630
662
  tool_choose_kwargs = tool_choose_kwargs or {}
631
663
 
632
664
  # Choose the toolboxes
633
- chosen_toolboxes = await self.choose_toolboxes(task, **box_choose_kwargs)
665
+ chosen_toolboxes = ok(await self.choose_toolboxes(task, **box_choose_kwargs))
634
666
  # Choose the tools
635
667
  chosen_tools = []
636
668
  for toolbox in chosen_toolboxes:
637
- chosen_tools.extend(await self.choose_tools(task, toolbox, **tool_choose_kwargs))
669
+ chosen_tools.extend(ok(await self.choose_tools(task, toolbox, **tool_choose_kwargs)))
638
670
  return chosen_tools
639
671
 
640
672
  async def gather_tools(self, task: Task, **kwargs: Unpack[ChooseKwargs]) -> List[Tool]:
@@ -165,3 +165,24 @@ async def ask_edit(
165
165
  if edited:
166
166
  res.append(edited)
167
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 ok[T](val: Optional[T], msg:str="Value is None") -> T:
177
+ """Check if a value is None and raise a ValueError with the provided message if it is.
178
+
179
+ Args:
180
+ val: The value to check.
181
+ msg: The message to include in the ValueError if val is None.
182
+
183
+ Returns:
184
+ T: The value if it is not None.
185
+ """
186
+ if val is None:
187
+ raise ValueError(msg)
188
+ return val
fabricatio/parser.py CHANGED
@@ -52,6 +52,7 @@ class Capture(BaseModel):
52
52
  case _:
53
53
  return text
54
54
 
55
+
55
56
  def capture(self, text: str) -> Tuple[str, ...] | str | None:
56
57
  """Capture the first occurrence of the pattern in the given text.
57
58
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fabricatio
3
- Version: 0.2.6.dev4
3
+ Version: 0.2.6.dev6
4
4
  Classifier: License :: OSI Approved :: MIT License
5
5
  Classifier: Programming Language :: Rust
6
6
  Classifier: Programming Language :: Python :: 3.12
@@ -1,33 +1,33 @@
1
- fabricatio-0.2.6.dev4.dist-info/METADATA,sha256=ubAfxfpUafH4ygWS6xMDBD80OX7Cull2_D0W8D30NAI,14085
2
- fabricatio-0.2.6.dev4.dist-info/WHEEL,sha256=SmPT9fUKPAPiE6hwAZ9_NHUVRjWSQ_RENTrzrvPx4p0,94
3
- fabricatio-0.2.6.dev4.dist-info/licenses/LICENSE,sha256=do7J7EiCGbq0QPbMAL_FqLYufXpHnCnXBOuqVPwSV8Y,1088
4
- fabricatio/actions/article.py,sha256=d3i4i7h88yG8gvEW2SLDKM-FSsUv7qqiLgWpe6AJfSk,4463
1
+ fabricatio-0.2.6.dev6.dist-info/METADATA,sha256=b28GiuNopBEWlnMn7RmUNnS5MbiuFIU_wGXEGuH6gCY,14085
2
+ fabricatio-0.2.6.dev6.dist-info/WHEEL,sha256=mDFV3bKFgwlxLHvOsPqpR9up9dUKYzsUQNKBdkW5c08,94
3
+ fabricatio-0.2.6.dev6.dist-info/licenses/LICENSE,sha256=do7J7EiCGbq0QPbMAL_FqLYufXpHnCnXBOuqVPwSV8Y,1088
4
+ fabricatio/actions/article.py,sha256=LfIWnbFYB9e3Bq2YDPk1geWDbJTq7zCitLtpFhAhYHM,4563
5
5
  fabricatio/actions/output.py,sha256=KSSLvEvXsA10ACN2mbqGo98QwKLVUAoMUJNKYk6HhGc,645
6
6
  fabricatio/actions/rag.py,sha256=GpT7YlqOYznZyaT-6Y84_33HtZGT-5s71ZK8iroQA9g,813
7
7
  fabricatio/capabilities/correct.py,sha256=0BYhjo9WrLwKsXQR8bTPvdQITbrMs7RX1xpzhuQt_yY,5222
8
8
  fabricatio/capabilities/propose.py,sha256=y3kge5g6bb8HYuV8e9h4MdqOMTlsfAIZpqE_cagWPTY,1593
9
- fabricatio/capabilities/rag.py,sha256=OebdGps8LGniN_HkRAOuwZd1ZQsyQe3WrduNAmBSxLM,15773
9
+ fabricatio/capabilities/rag.py,sha256=VcFusFHb5Lz58kfd14JIrCh78uJkAs47SS6-bIGkwFo,15789
10
10
  fabricatio/capabilities/rating.py,sha256=R9otyZVE2E3kKxrOCTZMeesBCPbC-fSb7bXgZPMQzfU,14406
11
11
  fabricatio/capabilities/review.py,sha256=XYzpSnFCT9HS2XytQT8HDgV4SjXehexoJgucZFMx6P8,11102
12
- fabricatio/capabilities/task.py,sha256=nVsC8smZRM5kGnIDiQtgP9kiGkz5KB1S9NXhMvwY2CQ,4607
13
- fabricatio/config.py,sha256=bpj8i0KT8HQ9ka2kX3lcILBWh4S5_PenCas9wu_Ueg0,16302
12
+ fabricatio/capabilities/task.py,sha256=MBiDyC3oHwTbTiLiGyqUEVfVGSN42lU03ndeapTpyjQ,4609
13
+ fabricatio/config.py,sha256=f3B_Mwhc4mGEdECG4EqcxGww0Eu7KhCAwPXXJlHf1a8,16635
14
14
  fabricatio/core.py,sha256=VQ_JKgUGIy2gZ8xsTBZCdr_IP7wC5aPg0_bsOmjQ588,6458
15
15
  fabricatio/decorators.py,sha256=uzsP4tFKQNjDHBkofsjjoJA0IUAaYOtt6YVedoyOqlo,6551
16
16
  fabricatio/fs/curd.py,sha256=N6l2MncjrFfnXBRtteRouXp5Rjy8EAKC_i29_G-zz98,4618
17
17
  fabricatio/fs/readers.py,sha256=EZKN_AZdrp8DggJECP53QHw3uHeSDf-AwCAA_V7fNKU,1202
18
18
  fabricatio/fs/__init__.py,sha256=PCf0s_9KDjVfNw7AfPoJzGt3jMq4gJOfbcT4pb0D0ZY,588
19
19
  fabricatio/journal.py,sha256=stnEP88aUBA_GmU9gfTF2EZI8FS2OyMLGaMSTgK4QgA,476
20
- fabricatio/models/action.py,sha256=25kaph3csV0VQtxVPQCyRAusgwp6E1R1g4KBs7H9T2c,6448
20
+ fabricatio/models/action.py,sha256=dSmwIrW68JhCrkhWENRgTLIQ-0grVA4408QAUy23HZo,8210
21
21
  fabricatio/models/events.py,sha256=QvlnS8FEELg6KNabcJMeh2GV_y0ZBzKOPphcteKYWYU,4183
22
- fabricatio/models/extra.py,sha256=FkNpctRWFE_BTfOmByWeOAXn8pbCauB7d68Ow_qUkqI,7322
22
+ fabricatio/models/extra.py,sha256=nFB9WSqHVs6V7OVhLfRLnzFObaOJldRcrYdsC93ZCDY,13787
23
23
  fabricatio/models/generic.py,sha256=IdPJMf3qxZFq8yqd6OuAYKfCM0wBlJkozgxvxQZVEEc,14025
24
- fabricatio/models/kwargs_types.py,sha256=Dfmd18SABDeV9JsI1JfPNpoB8FtB6qVYgJshZBsN1P0,4593
25
- fabricatio/models/role.py,sha256=7S3HSjFLaSTZ5bzgTJLeZ3PpAQDEGBxPhou5Mp8ONpQ,1842
24
+ fabricatio/models/kwargs_types.py,sha256=XiXuHLWttp8MjNqQr1WdMFYVKVZdsa5Vg0nHLhNKCyA,4627
25
+ fabricatio/models/role.py,sha256=mmQbJ6GKr2Gx3wtjEz8d-vYoXs09ffcEkT_eCXaDd3E,2782
26
26
  fabricatio/models/task.py,sha256=8NaR7ojQWyM740EDTqt9stwHKdrD6axCRpLKo0QzS-I,10492
27
27
  fabricatio/models/tool.py,sha256=4b-v4WIC_LuLOKzzXL9bvKXr8vmGZ8O2uAFv5-1KRA0,7052
28
- fabricatio/models/usages.py,sha256=hR4OU4sjQ2jKaH5_kkN83vG58n3kcKnt9osND0BYi0Q,28634
29
- fabricatio/models/utils.py,sha256=1bCqeB6za7ecCAM3cU1raNWuN56732m45rXtlIlc3I4,5017
30
- fabricatio/parser.py,sha256=b1Em7zoEepQIrxgM51Damnbsx_AhPab-BefIWHGo1Ss,6249
28
+ fabricatio/models/usages.py,sha256=-689ssQ5F1SmxDToDHbv0EH8YaPTjhkn14l_M6Aer-M,30859
29
+ fabricatio/models/utils.py,sha256=3HW0tM6WwOK8g14tnIzVWTXzIRLHjMKPjjSl9pMRWkw,5668
30
+ fabricatio/parser.py,sha256=9Jzw-yV6uKbFvf6sPna-XHdziVGVBZWvPctgX_6ODL8,6251
31
31
  fabricatio/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
32
  fabricatio/toolboxes/arithmetic.py,sha256=WLqhY-Pikv11Y_0SGajwZx3WhsLNpHKf9drzAqOf_nY,1369
33
33
  fabricatio/toolboxes/fs.py,sha256=l4L1CVxJmjw9Ld2XUpIlWfV0_Fu_2Og6d3E13I-S4aE,736
@@ -37,6 +37,6 @@ fabricatio/workflows/rag.py,sha256=-YYp2tlE9Vtfgpg6ROpu6QVO8j8yVSPa6yDzlN3qVxs,5
37
37
  fabricatio/_rust.pyi,sha256=eawBfpyGrB-JtOh4I6RSbjFSq83SSl-0syBeZ-g8270,3491
38
38
  fabricatio/_rust_instances.py,sha256=2GwF8aVfYNemRI2feBzH1CZfBGno-XJJE5imJokGEYw,314
39
39
  fabricatio/__init__.py,sha256=SzBYsRhZeL77jLtfJEjmoHOSwHwUGyvMATX6xfndLDM,1135
40
- fabricatio/_rust.cp39-win_amd64.pyd,sha256=bkzJH6SS5nSFzAOx95RP-flNoBUsau_bk8S_AsKYZuU,1824768
41
- fabricatio-0.2.6.dev4.data/scripts/tdown.exe,sha256=pXfruD6ZBL0_05mWalUoeyLLqzpHRSiHKYcp6WwwDgU,3398144
42
- fabricatio-0.2.6.dev4.dist-info/RECORD,,
40
+ fabricatio/_rust.cp39-win_amd64.pyd,sha256=0xarl48qmXpp_BFtTKkg0cm6aLNGDviWyY3gPKMOL9Y,1826304
41
+ fabricatio-0.2.6.dev6.data/scripts/tdown.exe,sha256=sfJBs8p8BKKChg9vZPVR7PNnNgv9hqUm3uZ3558Zxqk,3397632
42
+ fabricatio-0.2.6.dev6.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: maturin (1.8.2)
2
+ Generator: maturin (1.8.3)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp39-cp39-win_amd64