fabricatio 0.2.0.dev13__tar.gz → 0.2.0.dev14__tar.gz
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-0.2.0.dev13 → fabricatio-0.2.0.dev14}/PKG-INFO +1 -1
- fabricatio-0.2.0.dev14/examples/propose_task/propose.py +31 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/pyproject.toml +1 -1
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/models/action.py +9 -3
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/models/role.py +14 -3
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/models/tool.py +21 -10
- fabricatio-0.2.0.dev14/python/fabricatio/toolboxes/__init__.py +15 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/toolboxes/arithmetic.py +5 -5
- fabricatio-0.2.0.dev14/python/fabricatio/toolboxes/task.py +4 -0
- fabricatio-0.2.0.dev14/templates.tar.gz +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/uv.lock +1 -1
- fabricatio-0.2.0.dev13/python/fabricatio/toolboxes/__init__.py +0 -7
- fabricatio-0.2.0.dev13/python/fabricatio/toolboxes/task.py +0 -4
- fabricatio-0.2.0.dev13/templates.tar.gz +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/.github/workflows/build-package.yaml +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/.github/workflows/ruff.yaml +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/.github/workflows/tests.yaml +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/.gitignore +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/.python-version +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/Cargo.lock +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/Cargo.toml +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/LICENSE +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/Makefile +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/README.md +0 -0
- /fabricatio-0.2.0.dev13/examples/propose_task/propose.py → /fabricatio-0.2.0.dev14/examples/llm_usages/llm_usage.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/examples/minor/hello_fabricatio.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/examples/simple_chat/chat.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/__init__.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/_rust.pyi +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/_rust_instances.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/actions/__init__.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/actions/communication.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/actions/transmission.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/config.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/core.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/decorators.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/fs/__init__.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/fs/readers.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/journal.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/models/events.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/models/generic.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/models/task.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/models/utils.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/parser.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/py.typed +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/src/lib.rs +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/src/templates.rs +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/templates/built-in/binary-exploitation-ctf-solver.hbs +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/templates/built-in/claude-xml.hbs +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/templates/built-in/clean-up-code.hbs +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/templates/built-in/cryptography-ctf-solver.hbs +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/templates/built-in/document-the-code.hbs +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/templates/built-in/find-security-vulnerabilities.hbs +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/templates/built-in/fix-bugs.hbs +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/templates/built-in/improve-performance.hbs +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/templates/built-in/make_choice.hbs +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/templates/built-in/make_judgment.hbs +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/templates/built-in/propose_task.hbs +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/templates/built-in/refactor.hbs +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/templates/built-in/reverse-engineering-ctf-solver.hbs +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/templates/built-in/web-ctf-solver.hbs +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/templates/built-in/write-git-commit.hbs +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/templates/built-in/write-github-pull-request.hbs +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/templates/built-in/write-github-readme.hbs +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/__init__.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_config.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_core.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_decorators.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_events.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_examples.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_action.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_communication.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_events.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_generic.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_llm_usage.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_propose_task.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_role.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_role_with_actions.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_task.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_template_manager.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_tool.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_transmission.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_utils.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_with_briefing.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_with_briefing_and_json_example.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_with_briefing_and_llm_usage.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_with_briefing_and_llm_usage_and_json_example.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_with_dependency.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_with_dependency_and_briefing.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_with_dependency_and_briefing_and_json_example.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_with_dependency_and_briefing_and_llm_usage.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_with_dependency_and_json_example.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_with_dependency_and_llm_usage.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_with_dependency_and_llm_usage_and_json_example.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_with_json_example.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_workflow.py +0 -0
- {fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_parser.py +0 -0
@@ -0,0 +1,31 @@
|
|
1
|
+
import asyncio
|
2
|
+
from typing import Any
|
3
|
+
|
4
|
+
from fabricatio import Action, Role, Task, WorkFlow, logger
|
5
|
+
|
6
|
+
task = Task(name="say hello", goal="say hello", description="say hello to the world")
|
7
|
+
|
8
|
+
|
9
|
+
class Talk(Action):
|
10
|
+
"""Action that says hello to the world."""
|
11
|
+
|
12
|
+
name: str = "talk"
|
13
|
+
output_key: str = "task_output"
|
14
|
+
|
15
|
+
async def _execute(self, task_input: Task[str], **_) -> Any:
|
16
|
+
ret = "Hello fabricatio!"
|
17
|
+
logger.info("executing talk action")
|
18
|
+
return ret
|
19
|
+
|
20
|
+
|
21
|
+
async def main() -> None:
|
22
|
+
"""Main function."""
|
23
|
+
role = Role(
|
24
|
+
name="talker", description="talker role", registry={task.pending_label: WorkFlow(name="talk", steps=(Talk,))}
|
25
|
+
)
|
26
|
+
logger.info(Task.json_example())
|
27
|
+
logger.info(f"proposed task: {await role.propose('write a rust clap cli that can download a html page')}")
|
28
|
+
|
29
|
+
|
30
|
+
if __name__ == "__main__":
|
31
|
+
asyncio.run(main())
|
@@ -8,10 +8,11 @@ from typing import Any, Dict, Self, Tuple, Type, Unpack
|
|
8
8
|
from fabricatio.journal import logger
|
9
9
|
from fabricatio.models.generic import LLMUsage, WithBriefing
|
10
10
|
from fabricatio.models.task import ProposeTask, Task
|
11
|
+
from fabricatio.models.tool import ToolBoxUsage
|
11
12
|
from pydantic import Field, PrivateAttr
|
12
13
|
|
13
14
|
|
14
|
-
class Action(ProposeTask):
|
15
|
+
class Action(ProposeTask, ToolBoxUsage):
|
15
16
|
"""Class that represents an action to be executed in a workflow."""
|
16
17
|
|
17
18
|
personality: str = Field(default="")
|
@@ -50,7 +51,7 @@ class Action(ProposeTask):
|
|
50
51
|
return f"# The action you are going to perform: \n{super().briefing}"
|
51
52
|
|
52
53
|
|
53
|
-
class WorkFlow[A: Type[Action] | Action](WithBriefing, LLMUsage):
|
54
|
+
class WorkFlow[A: Type[Action] | Action](WithBriefing, LLMUsage, ToolBoxUsage):
|
54
55
|
"""Class that represents a workflow to be executed in a task."""
|
55
56
|
|
56
57
|
_context: Queue[Dict[str, Any]] = PrivateAttr(default_factory=lambda: Queue(maxsize=1))
|
@@ -121,7 +122,12 @@ class WorkFlow[A: Type[Action] | Action](WithBriefing, LLMUsage):
|
|
121
122
|
logger.debug(f"Initializing context for workflow: {self.name}")
|
122
123
|
await self._context.put({self.task_input_key: None, **dict(self.extra_init_context)})
|
123
124
|
|
124
|
-
def
|
125
|
+
def steps_fallback_to_self(self) -> Self:
|
125
126
|
"""Set the fallback for each step to the workflow itself."""
|
126
127
|
self.hold_to(self._instances)
|
127
128
|
return self
|
129
|
+
|
130
|
+
def steps_supply_tools_from_self(self) -> Self:
|
131
|
+
"""Supply the tools from the workflow to each step."""
|
132
|
+
self.provide_tools_to(self._instances)
|
133
|
+
return self
|
@@ -1,25 +1,36 @@
|
|
1
1
|
"""Module that contains the Role class."""
|
2
2
|
|
3
|
-
from typing import Any
|
3
|
+
from typing import Any, Set
|
4
4
|
|
5
5
|
from fabricatio.core import env
|
6
6
|
from fabricatio.journal import logger
|
7
7
|
from fabricatio.models.action import WorkFlow
|
8
8
|
from fabricatio.models.events import Event
|
9
9
|
from fabricatio.models.task import ProposeTask
|
10
|
+
from fabricatio.models.tool import ToolBox, ToolBoxUsage
|
11
|
+
from fabricatio.toolboxes import basic_toolboxes
|
10
12
|
from pydantic import Field
|
11
13
|
|
12
14
|
|
13
|
-
class Role(ProposeTask):
|
15
|
+
class Role(ProposeTask, ToolBoxUsage):
|
14
16
|
"""Class that represents a role with a registry of events and workflows."""
|
15
17
|
|
16
18
|
registry: dict[Event | str, WorkFlow] = Field(...)
|
17
19
|
""" The registry of events and workflows."""
|
18
20
|
|
21
|
+
toolboxes: Set[ToolBox] = Field(default=basic_toolboxes)
|
22
|
+
|
19
23
|
def model_post_init(self, __context: Any) -> None:
|
20
24
|
"""Register the workflows in the role to the event bus."""
|
21
25
|
for event, workflow in self.registry.items():
|
22
|
-
|
26
|
+
(
|
27
|
+
workflow.fallback_to(self)
|
28
|
+
.steps_fallback_to_self()
|
29
|
+
.inject_personality(self.briefing)
|
30
|
+
.supply_tools_from(self)
|
31
|
+
.steps_supply_tools_from_self()
|
32
|
+
)
|
33
|
+
|
23
34
|
logger.debug(
|
24
35
|
f"Registering workflow: {workflow.name} for event: {event.collapse() if isinstance(event, Event) else event}"
|
25
36
|
)
|
@@ -1,8 +1,9 @@
|
|
1
1
|
"""A module for defining tools and toolboxes."""
|
2
2
|
|
3
3
|
from inspect import iscoroutinefunction, signature
|
4
|
-
from typing import Any, Callable, Iterable, List,
|
4
|
+
from typing import Any, Callable, Iterable, List, Self, Set, Union
|
5
5
|
|
6
|
+
from fabricatio.journal import logger
|
6
7
|
from fabricatio.models.generic import Base, WithBriefing
|
7
8
|
from pydantic import Field
|
8
9
|
|
@@ -28,6 +29,7 @@ class Tool[**P, R](WithBriefing):
|
|
28
29
|
|
29
30
|
def invoke(self, *args: P.args, **kwargs: P.kwargs) -> R:
|
30
31
|
"""Invoke the tool's source function with the provided arguments."""
|
32
|
+
logger.info(f"Invoking tool: {self.name} with args: {args} and kwargs: {kwargs}")
|
31
33
|
return self.source(*args, **kwargs)
|
32
34
|
|
33
35
|
@property
|
@@ -105,14 +107,23 @@ class ToolBox(WithBriefing):
|
|
105
107
|
assert tool, f"No tool named {name} found."
|
106
108
|
return tool
|
107
109
|
|
110
|
+
def __hash__(self) -> int:
|
111
|
+
"""Return a hash of the toolbox based on its briefing."""
|
112
|
+
return hash(self.briefing)
|
108
113
|
|
109
|
-
|
114
|
+
|
115
|
+
class ToolBoxUsage(Base):
|
110
116
|
"""A class representing the usage of tools in a task."""
|
111
117
|
|
112
|
-
toolboxes:
|
113
|
-
"""
|
118
|
+
toolboxes: Set[ToolBox] = Field(default_factory=set)
|
119
|
+
"""A set of toolboxes used by the instance."""
|
120
|
+
|
121
|
+
@property
|
122
|
+
def available_toolbox_names(self) -> List[str]:
|
123
|
+
"""Return a list of available toolbox names."""
|
124
|
+
return [toolbox.name for toolbox in self.toolboxes]
|
114
125
|
|
115
|
-
def supply_tools_from(self, others: Union["
|
126
|
+
def supply_tools_from(self, others: Union["ToolBoxUsage", Iterable["ToolBoxUsage"]]) -> Self:
|
116
127
|
"""Supplies tools from other ToolUsage instances to this instance.
|
117
128
|
|
118
129
|
Args:
|
@@ -122,13 +133,13 @@ class ToolUsage(Base):
|
|
122
133
|
Returns:
|
123
134
|
Self: The current ToolUsage instance with updated tools.
|
124
135
|
"""
|
125
|
-
if isinstance(others,
|
136
|
+
if isinstance(others, ToolBoxUsage):
|
126
137
|
others = [others]
|
127
138
|
for other in others:
|
128
|
-
self.toolboxes.
|
139
|
+
self.toolboxes.update(other.toolboxes)
|
129
140
|
return self
|
130
141
|
|
131
|
-
def provide_tools_to(self, others: Union["
|
142
|
+
def provide_tools_to(self, others: Union["ToolBoxUsage", Iterable["ToolBoxUsage"]]) -> Self:
|
132
143
|
"""Provides tools from this instance to other ToolUsage instances.
|
133
144
|
|
134
145
|
Args:
|
@@ -138,8 +149,8 @@ class ToolUsage(Base):
|
|
138
149
|
Returns:
|
139
150
|
Self: The current ToolUsage instance.
|
140
151
|
"""
|
141
|
-
if isinstance(others,
|
152
|
+
if isinstance(others, ToolBoxUsage):
|
142
153
|
others = [others]
|
143
154
|
for other in others:
|
144
|
-
other.toolboxes.
|
155
|
+
other.toolboxes.update(self.toolboxes)
|
145
156
|
return self
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"""Contains the built-in toolboxes for the Fabricatio package."""
|
2
|
+
|
3
|
+
from typing import Set
|
4
|
+
|
5
|
+
from fabricatio.models.tool import ToolBox
|
6
|
+
from fabricatio.toolboxes.arithmetic import arithmetic_toolbox
|
7
|
+
from fabricatio.toolboxes.task import task_toolbox
|
8
|
+
|
9
|
+
basic_toolboxes: Set[ToolBox] = {task_toolbox, arithmetic_toolbox}
|
10
|
+
|
11
|
+
__all__ = [
|
12
|
+
"arithmetic_toolbox",
|
13
|
+
"basic_toolboxes",
|
14
|
+
"task_toolbox",
|
15
|
+
]
|
@@ -2,10 +2,10 @@
|
|
2
2
|
|
3
3
|
from fabricatio.models.tool import ToolBox
|
4
4
|
|
5
|
-
|
5
|
+
arithmetic_toolbox = ToolBox(name="ArithmeticToolBox", description="A toolbox for arithmetic operations.")
|
6
6
|
|
7
7
|
|
8
|
-
@
|
8
|
+
@arithmetic_toolbox.collect_tool
|
9
9
|
def add(a: float, b: float) -> float:
|
10
10
|
"""Add two numbers.
|
11
11
|
|
@@ -19,7 +19,7 @@ def add(a: float, b: float) -> float:
|
|
19
19
|
return a + b
|
20
20
|
|
21
21
|
|
22
|
-
@
|
22
|
+
@arithmetic_toolbox.collect_tool
|
23
23
|
def subtract(a: float, b: float) -> float:
|
24
24
|
"""Subtract two numbers.
|
25
25
|
|
@@ -33,7 +33,7 @@ def subtract(a: float, b: float) -> float:
|
|
33
33
|
return a - b
|
34
34
|
|
35
35
|
|
36
|
-
@
|
36
|
+
@arithmetic_toolbox.collect_tool
|
37
37
|
def multiply(a: float, b: float) -> float:
|
38
38
|
"""Multiply two numbers.
|
39
39
|
|
@@ -47,7 +47,7 @@ def multiply(a: float, b: float) -> float:
|
|
47
47
|
return a * b
|
48
48
|
|
49
49
|
|
50
|
-
@
|
50
|
+
@arithmetic_toolbox.collect_tool
|
51
51
|
def divide(a: float, b: float) -> float:
|
52
52
|
"""Divide two numbers.
|
53
53
|
|
Binary file
|
Binary file
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/python/fabricatio/actions/communication.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/templates/built-in/cryptography-ctf-solver.hbs
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/templates/built-in/improve-performance.hbs
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/templates/built-in/write-github-pull-request.hbs
RENAMED
File without changes
|
{fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/templates/built-in/write-github-readme.hbs
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_role_with_actions.py
RENAMED
File without changes
|
File without changes
|
{fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_template_manager.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{fabricatio-0.2.0.dev13 → fabricatio-0.2.0.dev14}/tests/test_models/test_with_json_example.py
RENAMED
File without changes
|
File without changes
|
File without changes
|