swarmauri 0.9.0.dev6__tar.gz → 0.9.1.dev3__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.
- {swarmauri-0.9.0.dev6 → swarmauri-0.9.1.dev3}/PKG-INFO +132 -14
- swarmauri-0.9.1.dev3/README.md +198 -0
- {swarmauri-0.9.0.dev6 → swarmauri-0.9.1.dev3}/pyproject.toml +19 -2
- swarmauri-0.9.0.dev6/README.md +0 -86
- {swarmauri-0.9.0.dev6 → swarmauri-0.9.1.dev3}/LICENSE +0 -0
- {swarmauri-0.9.0.dev6 → swarmauri-0.9.1.dev3}/swarmauri/__init__.py +0 -0
- {swarmauri-0.9.0.dev6 → swarmauri-0.9.1.dev3}/swarmauri/cli.py +0 -0
- {swarmauri-0.9.0.dev6 → swarmauri-0.9.1.dev3}/swarmauri/importer.py +0 -0
- {swarmauri-0.9.0.dev6 → swarmauri-0.9.1.dev3}/swarmauri/interface_registry.py +0 -0
- {swarmauri-0.9.0.dev6 → swarmauri-0.9.1.dev3}/swarmauri/plugin_citizenship_registry.py +0 -0
- {swarmauri-0.9.0.dev6 → swarmauri-0.9.1.dev3}/swarmauri/plugin_manager.py +0 -0
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: swarmauri
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.1.dev3
|
|
4
4
|
Summary: Namespace package for components, packages, and plugins within the Swarmauri framework.
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
License-File: LICENSE
|
|
7
|
+
Keywords: swarmauri,dynamic-json-schema,discriminated-unions,pydantic,schema-first,serialization,yaml,toml,plugin-factory,typed-components
|
|
7
8
|
Author: Jacob Stewart
|
|
8
9
|
Author-email: jacob@swarmauri.com
|
|
9
|
-
Requires-Python: >=3.10,<3.
|
|
10
|
+
Requires-Python: >=3.10,<3.15
|
|
10
11
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
12
|
+
Classifier: Programming Language :: Python
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
11
15
|
Classifier: Programming Language :: Python :: 3.10
|
|
12
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
13
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
14
20
|
Provides-Extra: default
|
|
15
21
|
Provides-Extra: full
|
|
16
22
|
Provides-Extra: llms
|
|
@@ -56,23 +62,21 @@ Requires-Dist: toml (>=0.10.2)
|
|
|
56
62
|
Requires-Dist: typing_extensions
|
|
57
63
|
Description-Content-Type: text/markdown
|
|
58
64
|
|
|
59
|
-

|
|
60
66
|
|
|
61
67
|
<p align="center">
|
|
62
|
-
<a href="https://
|
|
63
|
-
<img src="https://
|
|
68
|
+
<a href="https://pepy.tech/project/swarmauri/">
|
|
69
|
+
<img src="https://static.pepy.tech/badge/swarmauri/month" alt="PyPI - Downloads"/></a>
|
|
64
70
|
<a href="https://hits.sh/github.com/swarmauri/swarmauri-sdk/tree/master/pkgs/swarmauri/">
|
|
65
71
|
<img alt="Hits" src="https://hits.sh/github.com/swarmauri/swarmauri-sdk/tree/master/pkgs/swarmauri.svg"/></a>
|
|
66
72
|
<a href="https://pypi.org/project/swarmauri/">
|
|
67
|
-
<img src="https://img.shields.io/
|
|
73
|
+
<img src="https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-blue" alt="PyPI - Python Version"/></a>
|
|
68
74
|
<a href="https://pypi.org/project/swarmauri/">
|
|
69
75
|
<img src="https://img.shields.io/pypi/l/swarmauri" alt="PyPI - License"/></a>
|
|
70
76
|
<a href="https://pypi.org/project/swarmauri/">
|
|
71
77
|
<img src="https://img.shields.io/pypi/v/swarmauri?label=swarmauri&color=green" alt="PyPI - swarmauri"/></a>
|
|
72
78
|
</p>
|
|
73
79
|
|
|
74
|
-
---
|
|
75
|
-
|
|
76
80
|
# Swarmauri SDK
|
|
77
81
|
|
|
78
82
|
The Swarmauri SDK offers a comprehensive suite of tools designed for building distributed, extensible systems using the Swarmauri framework.
|
|
@@ -88,6 +92,80 @@ in `interface_registry.py`, then mapped to plugin modules via
|
|
|
88
92
|
`plugin_citizenship_registry.py`. For a deeper look at the import flow, see
|
|
89
93
|
[`docs/callflow.md`](docs/callflow.md).
|
|
90
94
|
|
|
95
|
+
## Public Operator Surfaces
|
|
96
|
+
|
|
97
|
+
Swarmauri exposes three stable operator-facing surfaces:
|
|
98
|
+
|
|
99
|
+
1. **Namespace imports (`swarmauri.<kind>`)**
|
|
100
|
+
The primary runtime surface is the namespace import path. Importing concrete
|
|
101
|
+
operators through the `swarmauri` namespace triggers the microkernel
|
|
102
|
+
importer and resolves to the installed implementation.
|
|
103
|
+
|
|
104
|
+
2. **Registry contracts (`interface_registry.py`)**
|
|
105
|
+
The interface registry defines the accepted interface path for each resource
|
|
106
|
+
kind. This is the canonical public contract that implementations must satisfy.
|
|
107
|
+
|
|
108
|
+
3. **Citizenship mappings (`plugin_citizenship_registry.py`)**
|
|
109
|
+
Citizenship maps each public interface path to a concrete plugin module that
|
|
110
|
+
can be loaded. This is the public compatibility surface used to connect
|
|
111
|
+
interface contracts to implementations.
|
|
112
|
+
|
|
113
|
+
Together these surfaces allow operators to use stable import paths while
|
|
114
|
+
implementations evolve independently.
|
|
115
|
+
|
|
116
|
+
## Native Dynamic Schemas and Serialization
|
|
117
|
+
|
|
118
|
+
Swarmauri treats dynamic, typed component serialization as a core runtime
|
|
119
|
+
strength. Registered component families use `type` discriminators and dynamic
|
|
120
|
+
unions so factories, HTTP APIs, queues, and persisted JSON payloads can restore
|
|
121
|
+
the concrete subclass that was serialized.
|
|
122
|
+
|
|
123
|
+
Every `ComponentBase`-derived component inherits JSON support from Pydantic and
|
|
124
|
+
YAML/TOML helpers from the Swarmauri base mixins. That means the same component
|
|
125
|
+
initialization can move through JSON, YAML, or TOML configuration files and dump
|
|
126
|
+
back to those formats while preserving concrete kin.
|
|
127
|
+
|
|
128
|
+
```python
|
|
129
|
+
from typing import Literal
|
|
130
|
+
from pydantic import BaseModel
|
|
131
|
+
from swarmauri_base.ComponentBase import ComponentBase
|
|
132
|
+
from swarmauri_base.DynamicBase import SubclassUnion
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
@ComponentBase.register_model()
|
|
136
|
+
class RuntimeConnector(ComponentBase):
|
|
137
|
+
type: Literal["RuntimeConnector"] = "RuntimeConnector"
|
|
138
|
+
label: str
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
@ComponentBase.register_type(RuntimeConnector, "HttpRuntimeConnector")
|
|
142
|
+
class HttpRuntimeConnector(RuntimeConnector):
|
|
143
|
+
type: Literal["HttpRuntimeConnector"] = "HttpRuntimeConnector"
|
|
144
|
+
endpoint: str
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
class RuntimePayload(BaseModel):
|
|
148
|
+
connector: SubclassUnion[RuntimeConnector]
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
payload = RuntimePayload.model_validate(
|
|
152
|
+
{
|
|
153
|
+
"connector": {
|
|
154
|
+
"type": "HttpRuntimeConnector",
|
|
155
|
+
"label": "orders",
|
|
156
|
+
"endpoint": "https://api.example.test/orders",
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
)
|
|
160
|
+
|
|
161
|
+
assert isinstance(payload.connector, HttpRuntimeConnector)
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Without this, applications usually fall back to untyped dictionaries or manual
|
|
165
|
+
factory switches. With it, Swarmauri can publish JSON Schema for the available
|
|
166
|
+
kin classes and hydrate concrete components from the same payloads used by
|
|
167
|
+
APIs, databases, and configuration files.
|
|
168
|
+
|
|
91
169
|
## Core
|
|
92
170
|
- **Core Interfaces**: Define the fundamental communication and data-sharing protocols between components in a Swarmauri-based system.
|
|
93
171
|
|
|
@@ -97,7 +175,7 @@ in `interface_registry.py`, then mapped to plugin modules via
|
|
|
97
175
|
- **Concrete Classes**: Ready-to-use, pre-implemented classes that fulfill standard system needs while adhering to Swarmauri principles. **These classes are the first in line for ongoing support and maintenance, ensuring they remain stable, performant, and up to date with future SDK developments.**
|
|
98
176
|
|
|
99
177
|
## Community
|
|
100
|
-
- **Third-Party Plug-in Integration**: Concrete classes designed to extend the framework
|
|
178
|
+
- **Third-Party Plug-in Integration**: Concrete classes designed to extend the framework’s capabilities by utilizing third-party libraries and plugins.
|
|
101
179
|
- **Open Source Contributions**: A collaborative space for developers to contribute new components, plug-ins, and features.
|
|
102
180
|
|
|
103
181
|
## Experimental
|
|
@@ -106,17 +184,60 @@ in `interface_registry.py`, then mapped to plugin modules via
|
|
|
106
184
|
# Features
|
|
107
185
|
|
|
108
186
|
- **Polymorphism**: Allows for dynamic behavior switching between components, enabling flexible, context-aware system behavior.
|
|
187
|
+
- **Dynamic JSON Schemas**: Updates discriminated-union schemas as registered component kin become available.
|
|
109
188
|
- **Discriminated Unions**: Provides a robust method for handling multiple possible object types in a type-safe manner.
|
|
110
|
-
- **Serialization**: Efficiently encode and decode
|
|
189
|
+
- **Serialization**: Efficiently encode and decode component initializations across JSON, YAML, and TOML while preserving concrete `type`.
|
|
111
190
|
- **Intensional and Extensional Programming**: The microkernel continues to leverage both rule-based (intensional) patterns and set-based (extensional) plugin discovery, allowing you to build and manipulate complex data structures with ease.
|
|
112
191
|
|
|
113
192
|
## Use Cases
|
|
114
193
|
|
|
115
194
|
- **Modular Systems**: Develop scalable, pluggable systems that can evolve over time by adding or modifying components without disrupting the entire ecosystem.
|
|
116
|
-
- **Distributed Architectures**: Build systems with distributed nodes that seamlessly communicate using the SDK
|
|
195
|
+
- **Distributed Architectures**: Build systems with distributed nodes that seamlessly communicate using the SDK’s standardized interfaces.
|
|
117
196
|
- **Third-Party Integrations**: Extend the system's capabilities by easily incorporating third-party tools, libraries, and services.
|
|
118
197
|
- **Prototype and Experimentation**: Test cutting-edge ideas using the experimental components in the SDK, while retaining the reliability of core and standard features for production systems.
|
|
119
198
|
|
|
199
|
+
## Extension Surface
|
|
200
|
+
|
|
201
|
+
Swarmauri is designed to be extended by adding new resource kinds or new
|
|
202
|
+
implementations for existing kinds.
|
|
203
|
+
|
|
204
|
+
For extension work:
|
|
205
|
+
|
|
206
|
+
- Add or update the interface contract in
|
|
207
|
+
[`swarmauri/interface_registry.py`](swarmauri/interface_registry.py).
|
|
208
|
+
- Register the concrete implementation in
|
|
209
|
+
[`swarmauri/plugin_citizenship_registry.py`](swarmauri/plugin_citizenship_registry.py).
|
|
210
|
+
- Ensure the implementation module can be imported and instantiated directly
|
|
211
|
+
through its public class API.
|
|
212
|
+
- Validate import resolution against the call flow documented in
|
|
213
|
+
[`docs/callflow.md`](docs/callflow.md).
|
|
214
|
+
|
|
215
|
+
This extension surface keeps the microkernel small while allowing packages,
|
|
216
|
+
plugins, and standards modules to participate in the same runtime model.
|
|
217
|
+
|
|
218
|
+
## Authoring Guide
|
|
219
|
+
|
|
220
|
+
When authoring new Swarmauri components:
|
|
221
|
+
|
|
222
|
+
1. **Define the interface first**
|
|
223
|
+
Start from the interface contract and ensure your class adheres to the
|
|
224
|
+
expected methods and typing.
|
|
225
|
+
|
|
226
|
+
2. **Implement concrete behavior in your package**
|
|
227
|
+
Keep domain logic in the implementation package and keep the namespace
|
|
228
|
+
microkernel declarations focused on discovery and routing.
|
|
229
|
+
|
|
230
|
+
3. **Register the implementation**
|
|
231
|
+
Add citizenship entries so the namespace importer can resolve your class.
|
|
232
|
+
|
|
233
|
+
4. **Instantiate plugins directly in usage examples**
|
|
234
|
+
Prefer direct class imports/instantiation in examples and integrations unless
|
|
235
|
+
a manager abstraction is explicitly required.
|
|
236
|
+
|
|
237
|
+
5. **Document expected workflow**
|
|
238
|
+
Include installation, minimal usage, and extension notes so users can adopt
|
|
239
|
+
and extend the component safely.
|
|
240
|
+
|
|
120
241
|
# Future Development
|
|
121
242
|
|
|
122
243
|
The Swarmauri SDK is an evolving platform, and the community is encouraged to contribute to its growth. Upcoming releases will focus on enhancing the framework's modularity, providing more advanced serialization methods, and expanding the community-driven component library.
|
|
@@ -136,9 +257,6 @@ When introducing a new resource kind or class, remember to update both the
|
|
|
136
257
|
`plugin_citizenship_registry.py` and `interface_registry.py` so the framework can
|
|
137
258
|
discover and validate your additions.
|
|
138
259
|
|
|
139
|
-
### Plugin Manager
|
|
140
|
-
- [plugin_manager.py](swarmauri/plugin_manager.py): Oversees the loading, initialization, and management of plugins to extend the functionality of the Swarmauri framework.
|
|
141
|
-
|
|
142
260
|
## Contributing
|
|
143
261
|
|
|
144
262
|
Contributions are welcome! If you'd like to add a new feature, fix a bug, or improve documentation, kindly go through the [contributions guidelines](https://github.com/swarmauri/swarmauri-sdk/blob/master/contributing.md) first.
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+

|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<a href="https://pepy.tech/project/swarmauri/">
|
|
5
|
+
<img src="https://static.pepy.tech/badge/swarmauri/month" alt="PyPI - Downloads"/></a>
|
|
6
|
+
<a href="https://hits.sh/github.com/swarmauri/swarmauri-sdk/tree/master/pkgs/swarmauri/">
|
|
7
|
+
<img alt="Hits" src="https://hits.sh/github.com/swarmauri/swarmauri-sdk/tree/master/pkgs/swarmauri.svg"/></a>
|
|
8
|
+
<a href="https://pypi.org/project/swarmauri/">
|
|
9
|
+
<img src="https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-blue" alt="PyPI - Python Version"/></a>
|
|
10
|
+
<a href="https://pypi.org/project/swarmauri/">
|
|
11
|
+
<img src="https://img.shields.io/pypi/l/swarmauri" alt="PyPI - License"/></a>
|
|
12
|
+
<a href="https://pypi.org/project/swarmauri/">
|
|
13
|
+
<img src="https://img.shields.io/pypi/v/swarmauri?label=swarmauri&color=green" alt="PyPI - swarmauri"/></a>
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
# Swarmauri SDK
|
|
17
|
+
|
|
18
|
+
The Swarmauri SDK offers a comprehensive suite of tools designed for building distributed, extensible systems using the Swarmauri framework.
|
|
19
|
+
|
|
20
|
+
## Swarmauri Namespace Microkernel
|
|
21
|
+
|
|
22
|
+
The `swarmauri` package is implemented as a namespace microkernel. When the
|
|
23
|
+
package is imported it registers a custom importer that consults the interface
|
|
24
|
+
and plugin citizenship registries to locate actual implementations. This design
|
|
25
|
+
keeps the namespace lightweight while still allowing first-party and community
|
|
26
|
+
plugins to be discovered and loaded on demand. New resource kinds are declared
|
|
27
|
+
in `interface_registry.py`, then mapped to plugin modules via
|
|
28
|
+
`plugin_citizenship_registry.py`. For a deeper look at the import flow, see
|
|
29
|
+
[`docs/callflow.md`](docs/callflow.md).
|
|
30
|
+
|
|
31
|
+
## Public Operator Surfaces
|
|
32
|
+
|
|
33
|
+
Swarmauri exposes three stable operator-facing surfaces:
|
|
34
|
+
|
|
35
|
+
1. **Namespace imports (`swarmauri.<kind>`)**
|
|
36
|
+
The primary runtime surface is the namespace import path. Importing concrete
|
|
37
|
+
operators through the `swarmauri` namespace triggers the microkernel
|
|
38
|
+
importer and resolves to the installed implementation.
|
|
39
|
+
|
|
40
|
+
2. **Registry contracts (`interface_registry.py`)**
|
|
41
|
+
The interface registry defines the accepted interface path for each resource
|
|
42
|
+
kind. This is the canonical public contract that implementations must satisfy.
|
|
43
|
+
|
|
44
|
+
3. **Citizenship mappings (`plugin_citizenship_registry.py`)**
|
|
45
|
+
Citizenship maps each public interface path to a concrete plugin module that
|
|
46
|
+
can be loaded. This is the public compatibility surface used to connect
|
|
47
|
+
interface contracts to implementations.
|
|
48
|
+
|
|
49
|
+
Together these surfaces allow operators to use stable import paths while
|
|
50
|
+
implementations evolve independently.
|
|
51
|
+
|
|
52
|
+
## Native Dynamic Schemas and Serialization
|
|
53
|
+
|
|
54
|
+
Swarmauri treats dynamic, typed component serialization as a core runtime
|
|
55
|
+
strength. Registered component families use `type` discriminators and dynamic
|
|
56
|
+
unions so factories, HTTP APIs, queues, and persisted JSON payloads can restore
|
|
57
|
+
the concrete subclass that was serialized.
|
|
58
|
+
|
|
59
|
+
Every `ComponentBase`-derived component inherits JSON support from Pydantic and
|
|
60
|
+
YAML/TOML helpers from the Swarmauri base mixins. That means the same component
|
|
61
|
+
initialization can move through JSON, YAML, or TOML configuration files and dump
|
|
62
|
+
back to those formats while preserving concrete kin.
|
|
63
|
+
|
|
64
|
+
```python
|
|
65
|
+
from typing import Literal
|
|
66
|
+
from pydantic import BaseModel
|
|
67
|
+
from swarmauri_base.ComponentBase import ComponentBase
|
|
68
|
+
from swarmauri_base.DynamicBase import SubclassUnion
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
@ComponentBase.register_model()
|
|
72
|
+
class RuntimeConnector(ComponentBase):
|
|
73
|
+
type: Literal["RuntimeConnector"] = "RuntimeConnector"
|
|
74
|
+
label: str
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
@ComponentBase.register_type(RuntimeConnector, "HttpRuntimeConnector")
|
|
78
|
+
class HttpRuntimeConnector(RuntimeConnector):
|
|
79
|
+
type: Literal["HttpRuntimeConnector"] = "HttpRuntimeConnector"
|
|
80
|
+
endpoint: str
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
class RuntimePayload(BaseModel):
|
|
84
|
+
connector: SubclassUnion[RuntimeConnector]
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
payload = RuntimePayload.model_validate(
|
|
88
|
+
{
|
|
89
|
+
"connector": {
|
|
90
|
+
"type": "HttpRuntimeConnector",
|
|
91
|
+
"label": "orders",
|
|
92
|
+
"endpoint": "https://api.example.test/orders",
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
assert isinstance(payload.connector, HttpRuntimeConnector)
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Without this, applications usually fall back to untyped dictionaries or manual
|
|
101
|
+
factory switches. With it, Swarmauri can publish JSON Schema for the available
|
|
102
|
+
kin classes and hydrate concrete components from the same payloads used by
|
|
103
|
+
APIs, databases, and configuration files.
|
|
104
|
+
|
|
105
|
+
## Core
|
|
106
|
+
- **Core Interfaces**: Define the fundamental communication and data-sharing protocols between components in a Swarmauri-based system.
|
|
107
|
+
|
|
108
|
+
## Standard
|
|
109
|
+
- **Base Classes**: Provide a foundation for constructing Swarmauri components, with standardized methods and properties.
|
|
110
|
+
- **Mixins**: Reusable code fragments designed to be integrated into various classes, offering shared functionality across different components.
|
|
111
|
+
- **Concrete Classes**: Ready-to-use, pre-implemented classes that fulfill standard system needs while adhering to Swarmauri principles. **These classes are the first in line for ongoing support and maintenance, ensuring they remain stable, performant, and up to date with future SDK developments.**
|
|
112
|
+
|
|
113
|
+
## Community
|
|
114
|
+
- **Third-Party Plug-in Integration**: Concrete classes designed to extend the framework’s capabilities by utilizing third-party libraries and plugins.
|
|
115
|
+
- **Open Source Contributions**: A collaborative space for developers to contribute new components, plug-ins, and features.
|
|
116
|
+
|
|
117
|
+
## Experimental
|
|
118
|
+
- **In-Development Components**: Early-stage features and components that push the boundaries of the Swarmauri framework, offering innovative solutions that are still in testing phases.
|
|
119
|
+
|
|
120
|
+
# Features
|
|
121
|
+
|
|
122
|
+
- **Polymorphism**: Allows for dynamic behavior switching between components, enabling flexible, context-aware system behavior.
|
|
123
|
+
- **Dynamic JSON Schemas**: Updates discriminated-union schemas as registered component kin become available.
|
|
124
|
+
- **Discriminated Unions**: Provides a robust method for handling multiple possible object types in a type-safe manner.
|
|
125
|
+
- **Serialization**: Efficiently encode and decode component initializations across JSON, YAML, and TOML while preserving concrete `type`.
|
|
126
|
+
- **Intensional and Extensional Programming**: The microkernel continues to leverage both rule-based (intensional) patterns and set-based (extensional) plugin discovery, allowing you to build and manipulate complex data structures with ease.
|
|
127
|
+
|
|
128
|
+
## Use Cases
|
|
129
|
+
|
|
130
|
+
- **Modular Systems**: Develop scalable, pluggable systems that can evolve over time by adding or modifying components without disrupting the entire ecosystem.
|
|
131
|
+
- **Distributed Architectures**: Build systems with distributed nodes that seamlessly communicate using the SDK’s standardized interfaces.
|
|
132
|
+
- **Third-Party Integrations**: Extend the system's capabilities by easily incorporating third-party tools, libraries, and services.
|
|
133
|
+
- **Prototype and Experimentation**: Test cutting-edge ideas using the experimental components in the SDK, while retaining the reliability of core and standard features for production systems.
|
|
134
|
+
|
|
135
|
+
## Extension Surface
|
|
136
|
+
|
|
137
|
+
Swarmauri is designed to be extended by adding new resource kinds or new
|
|
138
|
+
implementations for existing kinds.
|
|
139
|
+
|
|
140
|
+
For extension work:
|
|
141
|
+
|
|
142
|
+
- Add or update the interface contract in
|
|
143
|
+
[`swarmauri/interface_registry.py`](swarmauri/interface_registry.py).
|
|
144
|
+
- Register the concrete implementation in
|
|
145
|
+
[`swarmauri/plugin_citizenship_registry.py`](swarmauri/plugin_citizenship_registry.py).
|
|
146
|
+
- Ensure the implementation module can be imported and instantiated directly
|
|
147
|
+
through its public class API.
|
|
148
|
+
- Validate import resolution against the call flow documented in
|
|
149
|
+
[`docs/callflow.md`](docs/callflow.md).
|
|
150
|
+
|
|
151
|
+
This extension surface keeps the microkernel small while allowing packages,
|
|
152
|
+
plugins, and standards modules to participate in the same runtime model.
|
|
153
|
+
|
|
154
|
+
## Authoring Guide
|
|
155
|
+
|
|
156
|
+
When authoring new Swarmauri components:
|
|
157
|
+
|
|
158
|
+
1. **Define the interface first**
|
|
159
|
+
Start from the interface contract and ensure your class adheres to the
|
|
160
|
+
expected methods and typing.
|
|
161
|
+
|
|
162
|
+
2. **Implement concrete behavior in your package**
|
|
163
|
+
Keep domain logic in the implementation package and keep the namespace
|
|
164
|
+
microkernel declarations focused on discovery and routing.
|
|
165
|
+
|
|
166
|
+
3. **Register the implementation**
|
|
167
|
+
Add citizenship entries so the namespace importer can resolve your class.
|
|
168
|
+
|
|
169
|
+
4. **Instantiate plugins directly in usage examples**
|
|
170
|
+
Prefer direct class imports/instantiation in examples and integrations unless
|
|
171
|
+
a manager abstraction is explicitly required.
|
|
172
|
+
|
|
173
|
+
5. **Document expected workflow**
|
|
174
|
+
Include installation, minimal usage, and extension notes so users can adopt
|
|
175
|
+
and extend the component safely.
|
|
176
|
+
|
|
177
|
+
# Future Development
|
|
178
|
+
|
|
179
|
+
The Swarmauri SDK is an evolving platform, and the community is encouraged to contribute to its growth. Upcoming releases will focus on enhancing the framework's modularity, providing more advanced serialization methods, and expanding the community-driven component library.
|
|
180
|
+
|
|
181
|
+
## Modules Overview
|
|
182
|
+
|
|
183
|
+
### Importer
|
|
184
|
+
- [importer.py](swarmauri/importer.py): Handles the dynamic importing of modules and components within the Swarmauri framework.
|
|
185
|
+
|
|
186
|
+
### Interface Registry
|
|
187
|
+
- [interface_registry.py](swarmauri/interface_registry.py): Manages the registration and lookup of interfaces used for communication between different components.
|
|
188
|
+
|
|
189
|
+
### Plugin Citizenship Registry
|
|
190
|
+
- [plugin_citizenship_registry.py](swarmauri/plugin_citizenship_registry.py): Maintains a registry of plugins and their citizenship status within the Swarmauri ecosystem.
|
|
191
|
+
|
|
192
|
+
When introducing a new resource kind or class, remember to update both the
|
|
193
|
+
`plugin_citizenship_registry.py` and `interface_registry.py` so the framework can
|
|
194
|
+
discover and validate your additions.
|
|
195
|
+
|
|
196
|
+
## Contributing
|
|
197
|
+
|
|
198
|
+
Contributions are welcome! If you'd like to add a new feature, fix a bug, or improve documentation, kindly go through the [contributions guidelines](https://github.com/swarmauri/swarmauri-sdk/blob/master/contributing.md) first.
|
|
@@ -1,16 +1,33 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "swarmauri"
|
|
3
|
-
version = "0.9.
|
|
3
|
+
version = "0.9.1.dev3"
|
|
4
4
|
description = "Namespace package for components, packages, and plugins within the Swarmauri framework."
|
|
5
|
+
keywords = [
|
|
6
|
+
"swarmauri",
|
|
7
|
+
"dynamic-json-schema",
|
|
8
|
+
"discriminated-unions",
|
|
9
|
+
"pydantic",
|
|
10
|
+
"schema-first",
|
|
11
|
+
"serialization",
|
|
12
|
+
"yaml",
|
|
13
|
+
"toml",
|
|
14
|
+
"plugin-factory",
|
|
15
|
+
"typed-components",
|
|
16
|
+
]
|
|
5
17
|
license = "Apache-2.0"
|
|
6
18
|
readme = "README.md"
|
|
7
19
|
repository = "http://github.com/swarmauri/swarmauri-sdk"
|
|
8
|
-
requires-python = ">=3.10,<3.
|
|
20
|
+
requires-python = ">=3.10,<3.15"
|
|
9
21
|
classifiers = [
|
|
10
22
|
"License :: OSI Approved :: Apache Software License",
|
|
23
|
+
"Programming Language :: Python",
|
|
24
|
+
"Programming Language :: Python :: 3",
|
|
25
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
11
26
|
"Programming Language :: Python :: 3.10",
|
|
12
27
|
"Programming Language :: Python :: 3.11",
|
|
13
28
|
"Programming Language :: Python :: 3.12",
|
|
29
|
+
"Programming Language :: Python :: 3.13",
|
|
30
|
+
"Programming Language :: Python :: 3.14",
|
|
14
31
|
]
|
|
15
32
|
authors = [{ name = "Jacob Stewart", email = "jacob@swarmauri.com" }]
|
|
16
33
|
dependencies = [
|
swarmauri-0.9.0.dev6/README.md
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-

|
|
2
|
-
|
|
3
|
-
<p align="center">
|
|
4
|
-
<a href="https://pypi.org/project/swarmauri/">
|
|
5
|
-
<img src="https://img.shields.io/pypi/dm/swarmauri" alt="PyPI - Downloads"/></a>
|
|
6
|
-
<a href="https://hits.sh/github.com/swarmauri/swarmauri-sdk/tree/master/pkgs/swarmauri/">
|
|
7
|
-
<img alt="Hits" src="https://hits.sh/github.com/swarmauri/swarmauri-sdk/tree/master/pkgs/swarmauri.svg"/></a>
|
|
8
|
-
<a href="https://pypi.org/project/swarmauri/">
|
|
9
|
-
<img src="https://img.shields.io/pypi/pyversions/swarmauri" alt="PyPI - Python Version"/></a>
|
|
10
|
-
<a href="https://pypi.org/project/swarmauri/">
|
|
11
|
-
<img src="https://img.shields.io/pypi/l/swarmauri" alt="PyPI - License"/></a>
|
|
12
|
-
<a href="https://pypi.org/project/swarmauri/">
|
|
13
|
-
<img src="https://img.shields.io/pypi/v/swarmauri?label=swarmauri&color=green" alt="PyPI - swarmauri"/></a>
|
|
14
|
-
</p>
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
# Swarmauri SDK
|
|
19
|
-
|
|
20
|
-
The Swarmauri SDK offers a comprehensive suite of tools designed for building distributed, extensible systems using the Swarmauri framework.
|
|
21
|
-
|
|
22
|
-
## Swarmauri Namespace Microkernel
|
|
23
|
-
|
|
24
|
-
The `swarmauri` package is implemented as a namespace microkernel. When the
|
|
25
|
-
package is imported it registers a custom importer that consults the interface
|
|
26
|
-
and plugin citizenship registries to locate actual implementations. This design
|
|
27
|
-
keeps the namespace lightweight while still allowing first-party and community
|
|
28
|
-
plugins to be discovered and loaded on demand. New resource kinds are declared
|
|
29
|
-
in `interface_registry.py`, then mapped to plugin modules via
|
|
30
|
-
`plugin_citizenship_registry.py`. For a deeper look at the import flow, see
|
|
31
|
-
[`docs/callflow.md`](docs/callflow.md).
|
|
32
|
-
|
|
33
|
-
## Core
|
|
34
|
-
- **Core Interfaces**: Define the fundamental communication and data-sharing protocols between components in a Swarmauri-based system.
|
|
35
|
-
|
|
36
|
-
## Standard
|
|
37
|
-
- **Base Classes**: Provide a foundation for constructing Swarmauri components, with standardized methods and properties.
|
|
38
|
-
- **Mixins**: Reusable code fragments designed to be integrated into various classes, offering shared functionality across different components.
|
|
39
|
-
- **Concrete Classes**: Ready-to-use, pre-implemented classes that fulfill standard system needs while adhering to Swarmauri principles. **These classes are the first in line for ongoing support and maintenance, ensuring they remain stable, performant, and up to date with future SDK developments.**
|
|
40
|
-
|
|
41
|
-
## Community
|
|
42
|
-
- **Third-Party Plug-in Integration**: Concrete classes designed to extend the framework’s capabilities by utilizing third-party libraries and plugins.
|
|
43
|
-
- **Open Source Contributions**: A collaborative space for developers to contribute new components, plug-ins, and features.
|
|
44
|
-
|
|
45
|
-
## Experimental
|
|
46
|
-
- **In-Development Components**: Early-stage features and components that push the boundaries of the Swarmauri framework, offering innovative solutions that are still in testing phases.
|
|
47
|
-
|
|
48
|
-
# Features
|
|
49
|
-
|
|
50
|
-
- **Polymorphism**: Allows for dynamic behavior switching between components, enabling flexible, context-aware system behavior.
|
|
51
|
-
- **Discriminated Unions**: Provides a robust method for handling multiple possible object types in a type-safe manner.
|
|
52
|
-
- **Serialization**: Efficiently encode and decode data for transmission across different environments and system components, with support for both standard and custom serialization formats.
|
|
53
|
-
- **Intensional and Extensional Programming**: The microkernel continues to leverage both rule-based (intensional) patterns and set-based (extensional) plugin discovery, allowing you to build and manipulate complex data structures with ease.
|
|
54
|
-
|
|
55
|
-
## Use Cases
|
|
56
|
-
|
|
57
|
-
- **Modular Systems**: Develop scalable, pluggable systems that can evolve over time by adding or modifying components without disrupting the entire ecosystem.
|
|
58
|
-
- **Distributed Architectures**: Build systems with distributed nodes that seamlessly communicate using the SDK’s standardized interfaces.
|
|
59
|
-
- **Third-Party Integrations**: Extend the system's capabilities by easily incorporating third-party tools, libraries, and services.
|
|
60
|
-
- **Prototype and Experimentation**: Test cutting-edge ideas using the experimental components in the SDK, while retaining the reliability of core and standard features for production systems.
|
|
61
|
-
|
|
62
|
-
# Future Development
|
|
63
|
-
|
|
64
|
-
The Swarmauri SDK is an evolving platform, and the community is encouraged to contribute to its growth. Upcoming releases will focus on enhancing the framework's modularity, providing more advanced serialization methods, and expanding the community-driven component library.
|
|
65
|
-
|
|
66
|
-
## Modules Overview
|
|
67
|
-
|
|
68
|
-
### Importer
|
|
69
|
-
- [importer.py](swarmauri/importer.py): Handles the dynamic importing of modules and components within the Swarmauri framework.
|
|
70
|
-
|
|
71
|
-
### Interface Registry
|
|
72
|
-
- [interface_registry.py](swarmauri/interface_registry.py): Manages the registration and lookup of interfaces used for communication between different components.
|
|
73
|
-
|
|
74
|
-
### Plugin Citizenship Registry
|
|
75
|
-
- [plugin_citizenship_registry.py](swarmauri/plugin_citizenship_registry.py): Maintains a registry of plugins and their citizenship status within the Swarmauri ecosystem.
|
|
76
|
-
|
|
77
|
-
When introducing a new resource kind or class, remember to update both the
|
|
78
|
-
`plugin_citizenship_registry.py` and `interface_registry.py` so the framework can
|
|
79
|
-
discover and validate your additions.
|
|
80
|
-
|
|
81
|
-
### Plugin Manager
|
|
82
|
-
- [plugin_manager.py](swarmauri/plugin_manager.py): Oversees the loading, initialization, and management of plugins to extend the functionality of the Swarmauri framework.
|
|
83
|
-
|
|
84
|
-
## Contributing
|
|
85
|
-
|
|
86
|
-
Contributions are welcome! If you'd like to add a new feature, fix a bug, or improve documentation, kindly go through the [contributions guidelines](https://github.com/swarmauri/swarmauri-sdk/blob/master/contributing.md) first.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|