Metadata-Version: 2.4
Name: acex-devkit
Version: 1.2.0
Summary: ACE-X DevKit - Development kit for building ACE-X drivers and plugins
License: AGPL-3.0
Keywords: automation,devkit,sdk,drivers,plugins
Author: Johan Lahti
Author-email: johan.lahti@acebit.se
Requires-Python: >=3.13,<4.0
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Dist: deepdiff (>=8.6.1,<9.0.0)
Requires-Dist: ipaddress (>=1.0.23,<2.0.0)
Requires-Dist: pydantic (>=2.12.5,<3.0.0)
Requires-Dist: typing-extensions (>=4.0.0,<5.0.0)
Project-URL: Homepage, https://github.com/acex-labs/acex
Project-URL: Repository, https://github.com/acex-labs/acex
Description-Content-Type: text/markdown

# ACE-X DevKit

Development kit for building ACE-X drivers and plugins.

## Installation

```bash
pip install acex-devkit
```

## Usage

### Building a Network Element Driver

```python
from acex_devkit.drivers import NetworkElementDriver, TransportBase, RendererBase, ParserBase
from acex_devkit.models import ComposedConfiguration

class MyRenderer(RendererBase):
    def render(self, model: dict) -> str:
        # Implement your rendering logic
        pass

class MyTransport(TransportBase):
    def connect(self) -> None:
        # Implement connection logic
        pass
    
    def send(self, payload: Any) -> None:
        # Implement send logic
        pass
    
    def verify(self) -> bool:
        # Implement verification logic
        return True
    
    def rollback(self) -> None:
        # Implement rollback logic
        pass

class MyParser(ParserBase):
    def parse(self, configuration: str) -> ComposedConfiguration:
        # Implement parsing logic
        pass

class MyDriver(NetworkElementDriver):
    renderer_class = MyRenderer
    transport_class = MyTransport
    parser_class = MyParser
    
    def render(self, configuration: ComposedConfiguration, asset):
        return self.renderer.render(configuration, asset)
    
    def parse(self, configuration: str) -> ComposedConfiguration:
        return self.parser.parse(configuration)
```

## Package Contents

- **models**: Common data models (Asset, LogicalNode, ComposedConfiguration, etc.)
- **drivers**: Base classes for building network element drivers
- **exceptions**: Common exceptions
- **types**: Type aliases and protocols

## License

AGPL-3.0

