Metadata-Version: 2.4
Name: hexdag-plugins
Version: 0.1.0
Summary: Official plugins for hexDAG framework - Azure, MySQL, ETL, and storage adapters
Project-URL: Homepage, https://hexdag.ai
Project-URL: Repository, https://github.com/omniviser/hexdag
Project-URL: Documentation, https://hexdag.ai/docs/plugins
Project-URL: Bug Reports, https://github.com/omniviser/hexdag/issues
Author-email: hexDAG Team <team@hexdag.ai>
License: MIT
Keywords: adapter,azure,etl,hexdag,mysql,plugins,storage
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.12
Requires-Dist: hexdag>=0.5.0
Provides-Extra: all
Requires-Dist: aiohttp>=3.8.0; extra == 'all'
Requires-Dist: aiomysql>=0.2.0; extra == 'all'
Requires-Dist: asyncpg>=0.29.0; extra == 'all'
Requires-Dist: azure-cosmos>=4.3.0; extra == 'all'
Requires-Dist: azure-identity>=1.13.0; extra == 'all'
Requires-Dist: azure-keyvault-secrets>=4.4.0; extra == 'all'
Requires-Dist: azure-storage-blob>=12.13.0; extra == 'all'
Requires-Dist: chromadb>=0.4.0; extra == 'all'
Requires-Dist: openai>=1.0.0; extra == 'all'
Requires-Dist: pandas>=2.0.0; extra == 'all'
Requires-Dist: pgvector>=0.3.0; extra == 'all'
Requires-Dist: pymysql>=1.1.0; extra == 'all'
Requires-Dist: sqlalchemy>=2.0.0; extra == 'all'
Provides-Extra: azure
Requires-Dist: openai>=1.0.0; extra == 'azure'
Provides-Extra: azure-all
Requires-Dist: azure-cosmos>=4.3.0; extra == 'azure-all'
Requires-Dist: azure-identity>=1.13.0; extra == 'azure-all'
Requires-Dist: azure-keyvault-secrets>=4.4.0; extra == 'azure-all'
Requires-Dist: azure-storage-blob>=12.13.0; extra == 'azure-all'
Requires-Dist: openai>=1.0.0; extra == 'azure-all'
Provides-Extra: azure-blob
Requires-Dist: azure-identity>=1.13.0; extra == 'azure-blob'
Requires-Dist: azure-storage-blob>=12.13.0; extra == 'azure-blob'
Provides-Extra: azure-cosmos
Requires-Dist: azure-cosmos>=4.3.0; extra == 'azure-cosmos'
Requires-Dist: azure-identity>=1.13.0; extra == 'azure-cosmos'
Provides-Extra: azure-keyvault
Requires-Dist: azure-identity>=1.13.0; extra == 'azure-keyvault'
Requires-Dist: azure-keyvault-secrets>=4.4.0; extra == 'azure-keyvault'
Provides-Extra: dev
Requires-Dist: mypy>=1.0.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
Requires-Dist: pytest-cov>=5.0.0; extra == 'dev'
Requires-Dist: pytest-mock>=3.14.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: ruff>=0.1.0; extra == 'dev'
Provides-Extra: etl
Requires-Dist: aiohttp>=3.8.0; extra == 'etl'
Requires-Dist: pandas>=2.0.0; extra == 'etl'
Provides-Extra: mysql
Requires-Dist: pymysql>=1.1.0; extra == 'mysql'
Provides-Extra: storage-all
Requires-Dist: aiomysql>=0.2.0; extra == 'storage-all'
Requires-Dist: asyncpg>=0.29.0; extra == 'storage-all'
Requires-Dist: chromadb>=0.4.0; extra == 'storage-all'
Requires-Dist: pgvector>=0.3.0; extra == 'storage-all'
Requires-Dist: sqlalchemy>=2.0.0; extra == 'storage-all'
Provides-Extra: storage-chromadb
Requires-Dist: chromadb>=0.4.0; extra == 'storage-chromadb'
Provides-Extra: storage-mysql
Requires-Dist: aiomysql>=0.2.0; extra == 'storage-mysql'
Requires-Dist: sqlalchemy>=2.0.0; extra == 'storage-mysql'
Provides-Extra: storage-postgresql
Requires-Dist: asyncpg>=0.29.0; extra == 'storage-postgresql'
Requires-Dist: pgvector>=0.3.0; extra == 'storage-postgresql'
Requires-Dist: sqlalchemy>=2.0.0; extra == 'storage-postgresql'
Description-Content-Type: text/markdown

# hexDAG Plugins

This directory contains plugins that extend hexDAG's functionality.

## Available Plugins

| Plugin | Description | Port |
|--------|-------------|------|
| `mysql_adapter` | Production MySQL adapter with JSON support | database |

## Simple Plugin Workflow

Each plugin is a standalone Python package. Just use standard Python tools:

### Install & Test

```bash
# Install a plugin
uv pip install -e hexdag_plugins/mysql_adapter/

# Run tests
uv run pytest hexdag_plugins/mysql_adapter/tests/

# Format code (uses settings from plugin's pyproject.toml)
cd hexdag_plugins/mysql_adapter
uv run ruff format .
uv run ruff check --fix .
```

### Pre-commit Integration

Plugin files are automatically handled by the main pre-commit configuration. When you commit:
- **Plugin files** (`hexdag_plugins/`) use plugin-specific hooks with relaxed rules
- **Main code** (`hexdag/`) uses strict project hooks

This happens automatically - just commit normally and the right hooks run!

### Plugin Structure

```
hexdag_plugins/
└── my_plugin/
    ├── pyproject.toml      # Plugin configuration & dependencies
    ├── __init__.py
    ├── my_plugin.py        # Implementation
    └── tests/
        └── test_my_plugin.py
```

### Creating a New Plugin

1. Copy an existing plugin directory as a template
2. Update `pyproject.toml` with your plugin details
3. Implement the required port interface
4. Write tests

The `pyproject.toml` contains all configuration:
- Dependencies
- Tool settings (ruff, mypy, pytest)
- Plugin metadata for hexDAG

## Using Plugins

Plugins are used by referencing their full module path in YAML:

```yaml
spec:
  ports:
    database:
      adapter: hexdag_plugins.mysql_adapter.MySQLAdapter
```

Or import directly in Python:

```python
from hexdag_plugins.mysql_adapter import MySQLAdapter

adapter = MySQLAdapter(host="localhost", database="mydb")
```

That's it! No complex scripts or build tools needed.
