# {py:mod}`haniwers.v1.cli.mock`

```{py:module} haniwers.v1.cli.mock
```

```{autodoc2-docstring} haniwers.v1.cli.mock
:allowtitles:
```

## Module Contents

### Functions

````{list-table}
:class: autosummary longtable
:align: left

* - {py:obj}`validate_speed <haniwers.v1.cli.mock.validate_speed>`
  - ```{autodoc2-docstring} haniwers.v1.cli.mock.validate_speed
    :summary:
    ```
* - {py:obj}`validate_file_exists <haniwers.v1.cli.mock.validate_file_exists>`
  - ```{autodoc2-docstring} haniwers.v1.cli.mock.validate_file_exists
    :summary:
    ```
* - {py:obj}`validate_mutual_exclusivity <haniwers.v1.cli.mock.validate_mutual_exclusivity>`
  - ```{autodoc2-docstring} haniwers.v1.cli.mock.validate_mutual_exclusivity
    :summary:
    ```
* - {py:obj}`mock <haniwers.v1.cli.mock.mock>`
  - ```{autodoc2-docstring} haniwers.v1.cli.mock.mock
    :summary:
    ```
````

### Data

````{list-table}
:class: autosummary longtable
:align: left

* - {py:obj}`log <haniwers.v1.cli.mock.log>`
  - ```{autodoc2-docstring} haniwers.v1.cli.mock.log
    :summary:
    ```
````

### API

````{py:data} log
:canonical: haniwers.v1.cli.mock.log
:value: >
   'bind(...)'

```{autodoc2-docstring} haniwers.v1.cli.mock.log
```

````

````{py:function} validate_speed(speed: float) -> float
:canonical: haniwers.v1.cli.mock.validate_speed

```{autodoc2-docstring} haniwers.v1.cli.mock.validate_speed
```
````

````{py:function} validate_file_exists(path: typing.Optional[pathlib.Path]) -> typing.Optional[pathlib.Path]
:canonical: haniwers.v1.cli.mock.validate_file_exists

```{autodoc2-docstring} haniwers.v1.cli.mock.validate_file_exists
```
````

````{py:function} validate_mutual_exclusivity(load_from: typing.Optional[pathlib.Path], random: bool) -> tuple[typing.Optional[pathlib.Path], bool]
:canonical: haniwers.v1.cli.mock.validate_mutual_exclusivity

```{autodoc2-docstring} haniwers.v1.cli.mock.validate_mutual_exclusivity
```
````

````{py:function} mock(load_from: typing.Optional[pathlib.Path] = typer.Option(None, '--load-from', help='CSV file to replay (mutually exclusive with --random)', exists=False), random: bool = typer.Option(False, '--random', help='Generate random synthetic data (mutually exclusive with --load-from)'), events: typing.Optional[int] = typer.Option(None, '--events', help='Number of events to acquire (default: all events in CSV for replay)'), speed: float = typer.Option(1.0, '--speed', help='Speed multiplier for replay/generation (0.1 to 100.0, default: 1.0)'), shuffle: bool = typer.Option(False, '--shuffle', help='Shuffle event order (replay mode only)'), seed: typing.Optional[int] = typer.Option(None, '--seed', help='Random seed for reproducibility (random mode only)'), output_dir: typing.Optional[str] = typer.Option(None, '--output-dir', help='Output directory (default: sandbox/mock/)'), prefix: str = typer.Option('mock_data', '--prefix', help='Output filename prefix (default: mock_data)')) -> None
:canonical: haniwers.v1.cli.mock.mock

```{autodoc2-docstring} haniwers.v1.cli.mock.mock
```
````
