Skip to main content

Batch processing with progress tracking and error handling.

Project description

philiprehberger-batch-iter

Tests PyPI version License

Batch processing with progress tracking and error handling.

Installation

pip install philiprehberger-batch-iter

Usage

from philiprehberger_batch_iter import batch, collect_errors

# Split any iterable into fixed-size batches
for chunk in batch(range(10), size=3):
    print(chunk)
# [0, 1, 2]
# [3, 4, 5]
# [6, 7, 8]
# [9]

# Enable progress output to stderr
for chunk in batch(range(100), size=25, progress=True):
    process(chunk)
# batch 1: 25 items
# batch 2: 25 items
# ...

Error collection

from philiprehberger_batch_iter import collect_errors

def process_batch(items):
    for item in items:
        if item < 0:
            raise ValueError(f"negative value: {item}")

result = collect_errors([1, 2, -3, 4, 5, -6], size=2, fn=process_batch)
print(result.processed)     # 6
print(len(result.errors))   # 2
print(result.duration_ms)   # 0.12

Async batching

from philiprehberger_batch_iter import batch_async

async def process():
    async for chunk in batch_async(async_data_source(), size=50):
        await handle(chunk)

API

Function / Class Description
batch(iterable, size, progress=False) Yield fixed-size batches from an iterable
batch_async(async_iterable, size) Async generator yielding fixed-size batches
collect_errors(iterable, size, fn) Process batches and collect errors into a result
BatchResult Dataclass with processed, errors, duration_ms

Development

pip install -e .
python -m pytest tests/ -v

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

philiprehberger_batch_iter-0.1.0.tar.gz (4.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

philiprehberger_batch_iter-0.1.0-py3-none-any.whl (4.5 kB view details)

Uploaded Python 3

File details

Details for the file philiprehberger_batch_iter-0.1.0.tar.gz.

File metadata

File hashes

Hashes for philiprehberger_batch_iter-0.1.0.tar.gz
Algorithm Hash digest
SHA256 64ba9ea32df44f80aeb39fc34d5e8b42d902dd24a704429dc6e0574b7640002c
MD5 881f03bcc98e1e76c3294ec1f3d9ce22
BLAKE2b-256 b48421625853bd43c96d7cf1aedfdc6083992cd737b082cec34d787177f63dfe

See more details on using hashes here.

File details

Details for the file philiprehberger_batch_iter-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for philiprehberger_batch_iter-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7179ec3ba3eba53b47bb3621e4ae02392800a00c86c6cde094aee02af61d7646
MD5 84413e8c7685f210b94ad38006d95e48
BLAKE2b-256 fb25ab1171666d42d7e94157c14168a2d041dde04f273d1e476ae566935f044b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page