# client

Python API: `luxonis_ml.telemetry.client`

## Classes

### Telemetry

Telemetry client for emitting events via pluggable backends.

#### Methods

##### init

```python
def __init__(library_name: str, *, source_component: str | None = None, library_version: str | None = None, config: TelemetryConfig | None = None, context_providers: list[ContextProvider] | None = None, system_context_providers: list[SystemContextProvider] | None = None):
```

Initialize a telemetry client.

Parameters

 * `library_name` (`str`): Name of the library emitting telemetry, such as `"luxonis_ml"`.
 * `source_component` (`str | None`): Optional emitter/component name for the event context. If omitted, the library name is
   reused.
 * `library_version` (`str | None`): Version string for the library. If omitted, it is resolved from package metadata when
   possible.
 * `config` (`TelemetryConfig | None`): Telemetry configuration to use. If omitted, values are read from environment variables.
 * `context_providers` (`list[ContextProvider] | None`): Callables that return extra context to attach to every event.
 * `system_context_providers` (`list[SystemContextProvider] | None`): Callables that return extra context to attach only when
   system metadata is requested.

##### add_context_provider

```python
def add_context_provider(provider: ContextProvider):
```

Register a context provider for all events.

##### add_system_context_provider

```python
def add_system_context_provider(provider: SystemContextProvider):
```

Register a context provider used only with system metadata.

##### capture

```python
def capture(event: str, properties: dict[str, Any] | None = None, *, allowlist: set[str] | None = None, include_system_metadata: bool | None = None, distinct_id: str | None = None):
```

Capture a telemetry event.

Parameters

 * `event` (`str`): Event name, such as `"train_started"`.
 * `properties` (`dict[str, Any] | None`): Optional event properties. Values are sanitized and redacted before sending.
 * `allowlist` (`set[str] | None`): If set, only these property keys are included.
 * `include_system_metadata` (`bool | None`): Whether to add extended system metadata for this event. If omitted, the config
   default is used.
 * `distinct_id` (`str | None`): Optional backend identity override. When omitted, it defaults to the client's ephemeral session
   identifier.

##### extend_context_providers

```python
def extend_context_providers(providers: list[ContextProvider] | None):
```

Register multiple context providers.

##### extend_system_context_providers

```python
def extend_system_context_providers(providers: list[SystemContextProvider] | None):
```

Register multiple system context providers.

##### flush

```python
def flush(self):
```

Flush any buffered telemetry events.

##### register_backend

```python
def register_backend(name: str, backend_cls: type[TelemetryBackend]):
```

Register a custom backend class.

Parameters

 * `name` (`str`): Backend name used in `TelemetryConfig.backend`.
 * `backend_cls` (`type[TelemetryBackend]`): Backend class instantiated with `TelemetryConfig`.

##### shutdown

```python
def shutdown(self):
```

Shutdown the backend and flush pending telemetry.

#### Attributes

##### config

##### is_enabled

##### library_name

##### library_version

##### source_component

## Attributes

### ContextProvider

### SystemContextProvider
