Metadata-Version: 2.4
Name: cellaflow
Version: 0.1.0
Summary: Python SDK for Cellaflow
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: grpcio>=1.60.0
Requires-Dist: protobuf>=4.25.0
Requires-Dist: msgpack>=1.0.7
Requires-Dist: rfc8785>=0.1.4
Provides-Extra: dev
Requires-Dist: pytest>=8.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
Requires-Dist: black>=24.0.0; extra == "dev"
Requires-Dist: flake8>=7.0.0; extra == "dev"
Requires-Dist: mypy>=1.8.0; extra == "dev"
Requires-Dist: grpcio-tools>=1.60.0; extra == "dev"
Requires-Dist: mypy-protobuf>=3.5.0; extra == "dev"

# Cellaflow Python SDK

The official Python SDK for the Cellaflow Engine.
## Development Setup

To get up and running with the Python SDK for development, follow these steps:

1. **Create and activate a virtual environment**:
   ```bash
   cd python
   python3 -m venv venv
   source venv/bin/activate
   ```

2. **Install the SDK in editable mode with development dependencies**:
   ```bash
   pip install -e ".[dev]"
   ```

## Generating Protobufs and Typing Stubs (`.pyi`)

We use `grpcio-tools` and `mypy-protobuf` to generate Python code and typing stubs from the `.proto` files. This ensures your IDE (e.g. VS Code with Pylance or mypy) will properly resolve gRPC stubs and message attributes.

To regenerate the protobuf definitions and their corresponding `.pyi` typing stubs, run the generation script from the `python` directory:

```bash
./scripts/generate_protos.sh
```

This will automatically compile the protos from `../proto/cellaflow/v1/*.proto` and output both the Python code (`*_pb2.py`, `*_pb2_grpc.py`) and typing stubs (`*.pyi`) into `src/cellaflow/v1/`.

## Running Tests and Linters

You can validate your changes using the following tools:

- **Tests**: `pytest`
- **Formatting**: `black src tests`
- **Linting**: `flake8 src tests`
- **Type Checking**: `mypy src tests`
