Metadata-Version: 2.4
Name: pygrbl_streamer
Version: 1.0.0
Summary: Thread-safe, fault-tolerant G-code streamer for GRBL controllers.
Author: Beltrán Offerrall
License-Expression: MIT
Project-URL: Homepage, https://github.com/offerrall/PyGrbl_Streamer
Project-URL: Repository, https://github.com/offerrall/PyGrbl_Streamer
Project-URL: Issues, https://github.com/offerrall/PyGrbl_Streamer/issues
Keywords: grbl,gcode,cnc,laser,serial,streaming
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pyserial>=3.5
Dynamic: license-file

# PyGrbl_Streamer 1.0.0

[![PyPI](https://img.shields.io/pypi/v/pygrbl_streamer.svg)](https://pypi.org/project/pygrbl_streamer/)

Stream G-code to GRBL controllers over serial, with progress callbacks,
pause/resume/stop and configurable connections. Files and generators are
consumed lazily, keeping memory use low.

Used daily for a year in a professional workshop, operating multiple machines
in production.

Requires Python 3.10+. Part of the **pygrbl** family alongside
[`pygrbl_build`](https://github.com/offerrall/pygrbl_build).

## Install

```bash
pip install pygrbl-streamer
```

## Use

```python
from pygrbl_streamer import GrblStreamer

with GrblStreamer("/dev/ttyUSB0") as laser:  # "COM3" on Windows
    laser.progress_callback = lambda percent, command: print(f"{percent}%")
    if not laser.send_file("job.gcode"):
        raise RuntimeError("Job did not complete")
```

This executes the file on the machine. Default connection: 115200 baud,
soft reset and automatic unlock. Existing 0.2.0 calls remain supported;
new connection options are optional.

## Documentation

- [Connections, retries and controller compatibility](docs/connections.md)
- [Streaming, progress and job control](docs/streaming.md)
- [API, callbacks and state](docs/api.md)
- [Versioning and publishing](docs/publishing.md)
- [Changelog](CHANGELOG.md)

MIT — see [LICENSE](LICENSE).
