Metadata-Version: 2.4
Name: batchqr
Version: 1.0.1
Summary: Beautiful, developer-friendly QR codes — generate in batches with parallel processing
Project-URL: Homepage, https://github.com/qrbatch/qrbatch
Project-URL: Repository, https://github.com/qrbatch/qrbatch
Project-URL: Issues, https://github.com/qrbatch/qrbatch/issues
Author: batchqr contributors
License-Expression: MIT
License-File: LICENSE
Keywords: batch,batchqr,bulk,generator,qr,qrcode
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: Django
Classifier: Framework :: Flask
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: End Users/Desktop
Classifier: Intended Audience :: Information Technology
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
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 :: Multimedia :: Graphics
Classifier: Topic :: Office/Business
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Utilities
Requires-Python: >=3.10
Requires-Dist: click>=8.0
Requires-Dist: pillow>=9.0
Requires-Dist: qrcode[pil]>=7.0
Provides-Extra: all
Requires-Dist: numpy>=1.20; extra == 'all'
Requires-Dist: openpyxl>=3.0; extra == 'all'
Requires-Dist: pyzbar>=0.1.9; extra == 'all'
Requires-Dist: reportlab>=3.6; extra == 'all'
Provides-Extra: decode
Requires-Dist: pyzbar>=0.1.9; extra == 'decode'
Provides-Extra: dev
Requires-Dist: mypy>=1.0; extra == 'dev'
Requires-Dist: pytest-cov>=4.0; extra == 'dev'
Requires-Dist: pytest>=7.0; extra == 'dev'
Requires-Dist: ruff>=0.1.0; extra == 'dev'
Provides-Extra: excel
Requires-Dist: openpyxl>=3.0; extra == 'excel'
Provides-Extra: numpy
Requires-Dist: numpy>=1.20; extra == 'numpy'
Provides-Extra: pdf
Requires-Dist: reportlab>=3.6; extra == 'pdf'
Description-Content-Type: text/markdown

# batchqr

[![PyPI version](https://img.shields.io/pypi/v/batchqr.svg)](https://pypi.org/project/batchqr/)
[![Python versions](https://img.shields.io/pypi/pyversions/batchqr.svg)](https://pypi.org/project/batchqr/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

Generate QR codes in large batches with parallel processing.

## Features

- **Batch generation** — process thousands of QR codes in parallel
- **Multiple input formats** — CSV, JSON, Excel, or Python lists
- **Multiple output formats** — PNG, SVG, PDF, EPS
- **Flexible export** — individual files, ZIP archives, or PDF label sheets
- **Styling** — custom colors, logo overlays, preset themes
- **CLI & API** — use from the command line or as a Python library
- **Fault-tolerant** — per-item error handling, failed items don't kill the batch

## Installation

```bash
pip install batchqr
```

With optional dependencies:

```bash
pip install batchqr[pdf]      # PDF sheet export
pip install batchqr[excel]    # Excel input support
pip install batchqr[all]      # Everything
```

## Quick Start

### Python API

```python
import batchqr

# Single QR code
batchqr.make("https://example.com").save("qr.png")

# Batch generation
results = batchqr.batch([
    "https://example.com/1",
    "https://example.com/2",
    "https://example.com/3",
]).save_all("./qrcodes/")
```

### From CSV

```python
import batchqr

batchqr.batch.from_csv("data.csv").save_zip("qrcodes.zip")
```

### CLI

```bash
# Generate from inline data
batchqr make "https://example.com" -o qr.png

# Batch from CSV
batchqr batch data.csv --output ./qrcodes/

# Legacy CLI still works
qrbatch generate --input data.csv --output ./qrcodes/ --format png
```

## Configuration

```python
from batchqr import QRConfig

config = QRConfig(
    error_correction="H",   # L, M, Q, H
    box_size=10,
    border=4,
    fg_color="#000000",
    bg_color="#ffffff",
    image_format="png",
)
```

## Styling

```python
import batchqr

# Use a preset theme
qr = batchqr.make("https://example.com").theme("corporate-blue").save("styled.png")

# Or customize directly
qr = batchqr.make("https://example.com").color("#1a1a2e", "#ffffff").style("rounded").save("custom.png")
```

## Contributing

See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.

## License

MIT
[LICENSE](LICENSE)
