Metadata-Version: 2.4
Name: biotailor
Version: 0.1.3
Summary: Python SDK for the Biotailor bioinformatics pipeline platform
Author: Biotailor Team
License-Expression: MIT
Keywords: bioinformatics,biotailor,nextflow,pipeline
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
Requires-Python: >=3.9
Requires-Dist: requests>=2.28.0
Requires-Dist: tqdm>=4.64.0
Provides-Extra: dev
Requires-Dist: pytest-mock>=3.10; extra == 'dev'
Requires-Dist: pytest>=7.0; extra == 'dev'
Requires-Dist: responses>=0.23; extra == 'dev'
Requires-Dist: ruff>=0.1.0; extra == 'dev'
Description-Content-Type: text/markdown

# biotailor

Python SDK for the [Biotailor](https://biotailor.org) bioinformatics pipeline platform.

## Installation

```bash
pip install biotailor
```

## Quickstart

```python
from biotailor import BiotailorClient, Pipeline

# 1. Create a client (get your API key from the Biotailor website)
client = BiotailorClient(api_key="btk_xxx.sk_yyy")

# 2. Discover available tools
tools = client.list_tools()
for t in tools:
    print(f"{t.toolid}: {t.display_name}")

# 3. Build a pipeline
tool = client.get_tool("fastp-single")

pipeline = (
    Pipeline(name="QC my reads", tool=tool)
    .set_input("input", "reads.fastq")
    .set_param("qualified_quality_phred", 20)
)

# 4. Run and wait
job = client.run_and_wait(pipeline, output_dir="./results")
print(f"Job {job.jobid} finished with status: {job.job_status.value}")
```

## Development

```bash
# Install in dev mode
pip install -e ".[dev]"

# Run tests
pytest tests/ -v

# Lint
ruff check src/ tests/
```

## Publishing to PyPI

```bash
# 1. Install build tools
pip install build twine

# 2. Clean old builds and build the package
rm -rf dist/
python -m build

# 3. (Optional) Test on TestPyPI first
twine upload --repository testpypi dist/*

# 4. Upload to PyPI
twine upload dist/*
```

> **Note:** Bump `version` in `pyproject.toml` before each release — PyPI rejects duplicate versions. Use a [PyPI API token](https://pypi.org/manage/account/token/) for authentication (username: `__token__`).
