Metadata-Version: 2.4
Name: yoyo-pydaemon
Version: 0.1.0
Summary: Warm Python daemon for fast script execution across editors
Author: Yohai Ido
License: MIT
Project-URL: Homepage, https://github.com/yoyo-67/pydaemon
Project-URL: Repository, https://github.com/yoyo-67/pydaemon
Project-URL: Issues, https://github.com/yoyo-67/pydaemon/issues
Project-URL: Changelog, https://github.com/yoyo-67/pydaemon/blob/main/CHANGELOG.md
Keywords: python,daemon,repl,django,fastapi,warm-start,fast-reload
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX
Classifier: Topic :: Software Development
Classifier: Topic :: Utilities
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Provides-Extra: dev
Requires-Dist: pytest>=7; extra == "dev"
Requires-Dist: pytest-timeout; extra == "dev"

# pydaemon

Warm Python daemon for fast script execution. Editor-neutral CLI + library.

## Install

```bash
pipx install pydaemon
```

## Use

```bash
# Run a script via warm daemon (or direct python if no daemon)
pydaemon run script.py

# Start generic daemon (or exec user's daemon_cmd from .pydaemon.json)
pydaemon serve

# Inspect resolved config
pydaemon info
```

## Project config: `.pydaemon.json`

Place at your project root. Walks upward from cwd.

```json
{
  "socket_path": "/tmp/myproject.sock",
  "daemon_cmd": "./scripts/start_daemon.sh",
  "daemon_cwd": ".",
  "python": "./venv/bin/python",
  "args_options": {
    "local": "--db local",
    "staging": "--db staging"
  },
  "args": "--db local"
}
```

All fields optional. Without `daemon_cmd`, the built-in generic warm-Python daemon is used.

## Wire protocol

Unix socket. `[4-byte big-endian length][JSON payload]` frames.

Request: `{"script": str, "code"?: str, "argv"?: [str]}`
Response: `{"ok": bool, "output": str, "error"?: str}`

Any compliant server (generic, Django, FastAPI, custom) works with any compliant client.
