Metadata-Version: 2.4
Name: ol_anura
Version: 2.8.20.8a2
Summary: Schemas and core utilities for Anura projects
Author: Optilogic
License: MIT
Project-URL: Homepage, https://optilogic.com
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Operating System :: OS Independent
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: pydantic>=2.0.0

# ol-anura

The **supply chain optimization data model** for [Optilogic](https://optilogic.com)'s CosmicFrog platform — table and column definitions, data types, validation rules, and per-technology support matrices, exposed through a typed, read-only Python API.

- **Distribution name:** `ol-anura` (PyPI) — **import name:** `ol_anura`
- Python 3.11+ · single runtime dependency (`pydantic>=2`) · fully typed (`py.typed`) · MIT license

## Install

```bash
pip install ol-anura
```

## Quickstart

The public entry point is the `AnuraSchema` facade. All methods are static — do not instantiate it. Results are cached, so repeated calls are fast.

```python
from ol_anura import AnuraSchema

# Discover tables
all_tables = AnuraSchema.get_all_table_names()
input_tables = AnuraSchema.get_input_table_names()
output_tables = AnuraSchema.get_output_table_names()

# Inspect a table
columns = AnuraSchema.get_columns("Facilities")
primary_keys = AnuraSchema.get_primary_keys("Facilities")
metadata = AnuraSchema.get_table_metadata("Facilities")

# Filter by technology support
neo_tables = AnuraSchema.get_fully_supported_tables("neo")
supported = AnuraSchema.get_supported_tables("neo", include_in_development=True)

# Full engine-facing schema views
engine_schema = AnuraSchema.get_engine_schema("neo")
engine_dict = AnuraSchema.export_engine_schema_to_dict("neo")

# Relationships and validations
master_tables = AnuraSchema.get_master_tables("CustomerDemand", "CustomerName")
validations = AnuraSchema.get_table_validations("Facilities")
```

Table and column names are case-insensitive in most methods.

## Concepts

**Tables and columns** are Pydantic models (`ol_anura.core.Table` / `ol_anura.core.Column`). The canonical instances returned by the API are shared — treat them as read-only.

**Technologies** are the optimization engines that may consume a table: `NEO`, `THROG`, `TRIAD`, `HOPPER`, `DART`, `DENDRO`, `CYCLO`. Support is declared per column at one of three levels (`unsupported`, `in-development`, `fully-supported`) and rolled up to the table level automatically.

**Released vs. in-development:** every table and column carries a `released` flag. Query functions default to released content; pass the `released` parameter where available to include in-development definitions.

```python
from ol_anura import Technology, TechnologySupport, DataType, Category
from ol_anura.core import Table, Column, TableName
```

## Advanced usage

`AnuraSchema` is a facade over the underlying query modules; new code can also import `ol_anura.query` functions directly. A set of deprecated compatibility methods (e.g. `get_schema_dict`) exists for consumers migrating from the legacy internal `anura` package — avoid them in new code.

## Support

Maintained by Optilogic. Issues and questions: contact your Optilogic representative or visit [optilogic.com](https://optilogic.com).
