Metadata-Version: 2.1
Name: batch-div
Version: 0.1.0
Summary: A tool used for processing data in batches, such as in parallel processing.
Home-page: https://github.co.jp/
Author: bib_inf
Author-email: contact.bibinf@gmail.com
License: CC0 v1.0
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Software Development :: Libraries
Classifier: License :: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
Description-Content-Type: text/markdown

English description follows Japanese.

---
リストやその他のイテラブルを指定サイズのバッチに分割するシンプルなPythonユーティリティです。

## 概要

`batch-div` はリストをはじめとする任意のイテラブルを、指定サイズの部分リスト（バッチ）に分割します。並列処理やバッチ処理など、データをまとめて処理したい場面で便利です。

`itertools.batched`（Python 3.12以降）と同様の機能を、古いバージョンのPythonでも利用できます。結果はすべてリストとして返されるため、外側・内側ともに `len()` が使え、進捗表示に適しています。ただし、すべてリストとしてメモリに展開するため、メモリに載りきらないほど巨大なデータには不向きです。

## インストール

```bash
pip install batch-div
```

## 使い方

```python
import batch_div

tasks = [0, 1, 2, 3, 4, 5, 6]
for batch in batch_div(tasks, 3):
    print(batch)
```

**出力:**

```
[0, 1, 2]
[3, 4, 5]
[6]
```

第1引数に分割したいイテラブル（リスト、タプル、ジェネレータなど）、第2引数にバッチサイズを指定します。入力は先頭から順にバッチサイズごとに分割され、割り切れない場合は最後のバッチに残りの要素が入ります。

## 活用例

```python
import batch_div

items = list(range(100))
batches = batch_div(items, 10)
print(f"全バッチ数: {len(batches)}")  # -> 10

for i, batch in enumerate(batches):
    print(f"バッチ {i+1}/{len(batches)} を処理中 ({len(batch)} 件)")
    # ここに並列処理などを記述
```

## ライセンス

CC0 1.0 Universal（パブリックドメイン）

---

A simple Python utility for splitting a list or any iterable into batches of a specified size.

## Overview

`batch-div` divides a list — or any iterable — into sublists (batches) of a given size. It is useful when you want to process data in chunks — for example, in parallel or batch processing workflows.

Similar to `itertools.batched` (Python 3.12+), but works on older Python versions. All results are returned as lists, so `len()` is supported on both the outer and inner collections — handy for progress tracking. Note that because everything is materialized as lists, this tool is not suitable for extremely large datasets that don't fit in memory.

## Installation

```bash
pip install batch-div
```

## Usage

```python
import batch_div

tasks = [0, 1, 2, 3, 4, 5, 6]
for batch in batch_div(tasks, 3):
    print(batch)
```

**Output:**

```
[0, 1, 2]
[3, 4, 5]
[6]
```

The first argument is any iterable to split (lists, tuples, generators, etc.), and the second is the batch size. The input is divided into consecutive chunks of that size, with the last batch containing the remaining elements if the input doesn't divide evenly.

## Use Case Example

```python
import batch_div

items = list(range(100))
batches = batch_div(items, 10)
print(f"Total batches: {len(batches)}")  # -> 10

for i, batch in enumerate(batches):
    print(f"Processing batch {i+1}/{len(batches)} ({len(batch)} items)")
    # Insert your parallel or batch processing here
```

## License

CC0 1.0 Universal (Public Domain Dedication)
