Metadata-Version: 2.4
Name: imbi-common
Version: 0.7.1
Summary: Shared library for the Imbi ecosystem providing core data access, authentication primitives, and domain models
Author-email: "Gavin M. Roy" <gavinr@aweber.com>, Dave Shawley <daves@aweber.com>
License-Expression: BSD-3-Clause
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.14
Requires-Dist: cryptography>=42.0.4
Requires-Dist: jsonschema-models
Requires-Dist: markdown-it-py>=3.0
Requires-Dist: nanoid>=2.0.0
Requires-Dist: orjson
Requires-Dist: pydantic-settings
Requires-Dist: pydantic[email]>=2.0
Requires-Dist: pyjwt>=2.10.1
Requires-Dist: python-slugify
Requires-Dist: typer>=0.21.1
Provides-Extra: databases
Requires-Dist: clickhouse-connect[async]==0.12rc1; extra == 'databases'
Requires-Dist: fastembed>=0.6; extra == 'databases'
Requires-Dist: pgvector>=0.3; extra == 'databases'
Requires-Dist: psycopg[binary,pool]>=3.3; extra == 'databases'
Requires-Dist: valkey>=6; extra == 'databases'
Provides-Extra: server
Requires-Dist: fastapi>=0.115.0; extra == 'server'
Requires-Dist: uvicorn[standard]>=0.40.0; extra == 'server'
Description-Content-Type: text/markdown

# Imbi Common Library

Shared library for the Imbi ecosystem providing core data access, authentication primitives, and domain models.

## Overview

`imbi-common` is a Python library that provides common functionality for all Imbi services including:

- **Database Clients**: Apache AGE/PostgreSQL (graph database) and ClickHouse (analytics database) with connection management
- **Domain Models**: Pydantic models for Projects, Organizations, Teams, Environments, ProjectTypes, and more
- **Authentication**: JWT token creation/verification, token encryption
- **Configuration**: Pydantic Settings-based configuration management with TOML file support
- **Blueprint System**: Dynamic schema extension system for runtime model customization
- **Logging**: Consistent logging configuration across all services

## Services Using imbi-common

- **imbi-api**: Main API service for service management
- **imbi-gateway**: Webhook processing service
- **imbi-mcp**: Model Context Protocol server for Claude integration

## Documentation

Full documentation is available at: [https://aweber-imbi.github.io/imbi-common/](https://aweber-imbi.github.io/imbi-common/)

## Development

### Prerequisites

- [just](https://just.systems/man/en/packages.html) — task runner
- [uv](https://docs.astral.sh/uv/getting-started/installation/) — Python package manager

### Setup

```bash
# Clone the repository
git clone https://github.com/AWeber-Imbi/imbi-common.git
cd imbi-common

# Install dependencies and pre-commit hooks
just setup
```

### Running Tests

```bash
just test           # Full test suite with coverage (requires Docker)
just test <file>    # Run specific test file(s)
```

### Code Quality

```bash
just lint    # Run all linters
just format  # Reformat code
```

## License

BSD-3-Clause - See [LICENSE](LICENSE) file for details.

## Authors

- Dave Shawley <daves@aweber.com>
- Gavin M. Roy <gavinr@aweber.com>

## Contributing

Contributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
