Metadata-Version: 2.4
Name: snakemake-logger-plugin-dart
Version: 0.1.0
Summary: Snakemake logger plugin that streams workflow events to a Dart desktop app over WebSocket.
Project-URL: Homepage, https://github.com/karlaycosta/snakemake-dart
Project-URL: Repository, https://github.com/karlaycosta/snakemake-dart
Project-URL: Issues, https://github.com/karlaycosta/snakemake-dart/issues
Project-URL: Documentation, https://github.com/karlaycosta/snakemake-dart/blob/main/ARCHITECTURE.md
Project-URL: Changelog, https://github.com/karlaycosta/snakemake-dart/blob/main/python/CHANGELOG.md
Author-email: Deriks Karlay Dias Costa <karlaycosta@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: dart,logger,snakemake,snakemake-plugin,websocket
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: snakemake-interface-logger-plugins<3,>=1.2.0
Requires-Dist: websockets>=12.0
Provides-Extra: dev
Requires-Dist: pytest>=7; extra == 'dev'
Description-Content-Type: text/markdown

# snakemake-logger-plugin-dart

Plugin de logging do [Snakemake 9+](https://snakemake.readthedocs.io/) que
transmite os eventos do workflow em tempo real, via **WebSocket**, para uma
aplicação desktop (Dart) que embarca o servidor — contraparte do pacote Dart
[`snakemake_bridge`](https://pub.dev/packages/snakemake_bridge). Arquitetura e
protocolo:
[ARCHITECTURE.md](https://github.com/karlaycosta/snakemake-dart/blob/main/ARCHITECTURE.md).

## Instalação

```bash
pip install snakemake-logger-plugin-dart
# ou, a partir do código-fonte:
pip install -e .
# Snakemake passa a listar:
snakemake --help | grep logger-dart
```

## Uso

```bash
snakemake \
    --cores 4 \
    --logger dart \
    --logger-dart-address ws://127.0.0.1:8765
```

### Configurações

| Flag | Env var | Default | Descrição |
| --- | --- | --- | --- |
| `--logger-dart-address` | `SNAKEMAKE_LOGGER_DART_ADDRESS` | _(obrigatório)_ | URL `ws://` do servidor embarcado no app. |
| `--logger-dart-token` | `SNAKEMAKE_LOGGER_DART_TOKEN` | — | Bearer token exigido pelo app (prefira a env var; não aparece no `ps`). |
| `--logger-dart-flush-timeout` | — | `5.0` | Segundos máximos, no encerramento, aguardando a entrega dos eventos pendentes. |

## Garantias

- `emit()` **nunca bloqueia** o Snakemake: eventos vão para uma fila drenada
  por uma thread própria.
- Queda de conexão / app fechado **nunca** afetam o workflow: reconexão com
  backoff + buffer de replay (o app pede `replay` ao receber `hello`).
- Entrega *at-least-once* — o consumidor deduplica pelo `seq` do envelope.

## Desenvolvimento

```bash
pip install -e '.[dev]'
pytest
```
