# Module: inference_engine

## Purpose

Abstract base class defining the interface that all inference engine implementations must follow.

## Public Interface

### Class: InferenceEngine

#### Fields

| Field | Type | Description |
|-------|------|-------------|
| `batch_size` | int | Number of images per inference batch |

#### Methods

| Method | Signature | Description |
|--------|-----------|-------------|
| `__init__` | `(bytes model_bytes, int batch_size=1, **kwargs)` | Stores batch_size |
| `get_input_shape` | `() -> tuple` | Returns (height, width) of model input. Abstract — raises `NotImplementedError` |
| `get_batch_size` | `() -> int` | Returns `self.batch_size` |
| `run` | `(input_data) -> list` | Runs inference on preprocessed input blob. Abstract — raises `NotImplementedError` |

## Internal Logic

Pure abstract class. All methods except `get_batch_size` raise `NotImplementedError` and must be overridden by subclasses (`OnnxEngine`, `TensorRTEngine`).

## Dependencies

- **External**: `numpy` (declared in .pxd, not used in base)
- **Internal**: none (leaf module)

## Consumers

- `onnx_engine` — subclass
- `tensorrt_engine` — subclass
- `inference` — type reference in .pxd

## Data Models

None.

## Configuration

None.

## External Integrations

None.

## Security

None.

## Tests

None found.
