Metadata-Version: 2.4
Name: cnckit
Version: 0.2.0
Summary: A lightweight, modular Python framework for job queuing, scheduling, and automation around LinuxCNC
Project-URL: Homepage, https://github.com/jkkicks/cnckit
Project-URL: Documentation, https://jkkicks.github.io/cnckit
Project-URL: Repository, https://github.com/jkkicks/cnckit
Project-URL: Issues, https://github.com/jkkicks/cnckit/issues
Author: Jacob M
License-Expression: MIT
License-File: LICENSE
Keywords: automation,cnc,gcode,job-queue,linuxcnc,scheduling
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Manufacturing
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.10
Provides-Extra: all
Requires-Dist: fastapi>=0.100.0; extra == 'all'
Requires-Dist: paho-mqtt>=2.0.0; extra == 'all'
Requires-Dist: uvicorn[standard]>=0.20.0; extra == 'all'
Requires-Dist: websockets>=12.0; extra == 'all'
Provides-Extra: api
Requires-Dist: fastapi>=0.100.0; extra == 'api'
Requires-Dist: uvicorn[standard]>=0.20.0; extra == 'api'
Provides-Extra: dev
Requires-Dist: httpx>=0.27.0; extra == 'dev'
Requires-Dist: mkdocs-material>=9.5.0; extra == 'dev'
Requires-Dist: mkdocs>=1.6.0; extra == 'dev'
Requires-Dist: mkdocstrings[python]>=0.25.0; extra == 'dev'
Requires-Dist: mypy>=1.10.0; extra == 'dev'
Requires-Dist: pre-commit>=3.7.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: ruff>=0.4.0; extra == 'dev'
Provides-Extra: mqtt
Requires-Dist: paho-mqtt>=2.0.0; extra == 'mqtt'
Provides-Extra: robot
Provides-Extra: websocket
Requires-Dist: websockets>=12.0; extra == 'websocket'
Description-Content-Type: text/markdown

# cnckit

A lightweight, modular Python framework for job queuing, scheduling, and automation around LinuxCNC.

## Overview

cnckit provides a minimal core with optional integration modules, allowing you to adopt only the functionality you need. From simple local job queues to remote monitoring, API-based control, and more.

## Features

**Core (dependency-free):**

- Job queue with FIFO/LIFO/priority ordering
- Scheduler with start/stop/pause controls
- Machine state abstraction over LinuxCNC
- Event callbacks for job lifecycle
- Simulation mode for development

**Optional Integrations:**

- REST API for remote monitoring
- MQTT for messaging and automation
- WebSocket real-time streaming
- Robot interfaces (ROS2, TCP)

## Quick Start

```python
from cnckit.core import Machine, JobQueue, Scheduler

machine = Machine(simulate=True)  # or Machine() for real LinuxCNC
queue = JobQueue()
scheduler = Scheduler(machine, queue)

queue.add("part1.ngc")
queue.add("part2.ngc", priority=10)

scheduler.run_forever()
```

## Installation

```bash
pip install cnckit
```

With optional integrations:

```bash
pip install cnckit[api]      # REST API
pip install cnckit[mqtt]     # MQTT
pip install cnckit[all]      # Everything
```

## Documentation

- **[Quick Start](docs/getting-started/quickstart.md)** — Get up and running
- **[Architecture](docs/architecture.md)** — Design philosophy
- **[API Reference](docs/api/core/machine.md)** — Full API docs
- **[Roadmap](docs/roadmap.md)** — Planned features

## Development

```bash
git clone https://github.com/jkkicks/cnckit.git
cd cnckit
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest
```

See [Contributing](docs/contributing.md) for guidelines.

## License

MIT
