# ProgressBox 📦
> Stage-aware progress monitoring for parallel Python jobs



## Features
- 🎯 **Stage-aware tracking** - Monitor different stages of computation with timing analysis
- ⚡ **True parallelism** - Built for multiprocessing, threading, and joblib
- 📊 **Rich statistics** - ETA, throughput, stage timing breakdown
- 🖼️ **Beautiful display** - Fixed-width Unicode box with perfect alignment
- 🔧 **Production ready** - Logging, snapshots, error handling
## Installation
```bash
pip install progressbox
```
## Quick Start
```python
import progressbox as pbox
# Simple usage
config = pbox.Config(total=100, n_workers=4)
with pbox.Progress(config) as progress:
    for i in range(100):
        progress.task_start(i, worker=i % 4)
        progress.task_update(i, stage="processing")
        # ... do work ...
        progress.task_finish(i)
```
## Joblib Integration
```python
from joblib import Parallel, delayed
import progressbox as pbox
# Your existing joblib code, now with progress!
results = pbox.adapters.joblib_progress(
    items,
    process_func,
    n_jobs=6,
    config=pbox.Config(total=len(items))
)
```
## Documentation
See [full documentation](https://progressbox.readthedocs.io) for more examples and API reference.
## License
MIT License - see LICENSE file for details.
            
         
        Raw data
        
            {
    "_id": null,
    "home_page": null,
    "name": "progressbox",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "progress, parallel, monitoring, multiprocessing, joblib",
    "author": null,
    "author_email": "Zaafir Hasan <zaafirfhasan@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/09/82/ceb4da402ab23c0c191ac1112df9bc761510bb16a21bfc1fc2bc312b2143/progressbox-0.1.0a2.tar.gz",
    "platform": null,
    "description": "# ProgressBox \ud83d\udce6\r\n\r\n> Stage-aware progress monitoring for parallel Python jobs\r\n\r\n\r\n\r\n\r\n\r\n## Features\r\n\r\n- \ud83c\udfaf **Stage-aware tracking** - Monitor different stages of computation with timing analysis\r\n- \u26a1 **True parallelism** - Built for multiprocessing, threading, and joblib\r\n- \ud83d\udcca **Rich statistics** - ETA, throughput, stage timing breakdown\r\n- \ud83d\uddbc\ufe0f **Beautiful display** - Fixed-width Unicode box with perfect alignment\r\n- \ud83d\udd27 **Production ready** - Logging, snapshots, error handling\r\n\r\n## Installation\r\n\r\n```bash\r\npip install progressbox\r\n```\r\n\r\n## Quick Start\r\n\r\n```python\r\nimport progressbox as pbox\r\n\r\n# Simple usage\r\nconfig = pbox.Config(total=100, n_workers=4)\r\nwith pbox.Progress(config) as progress:\r\n    for i in range(100):\r\n        progress.task_start(i, worker=i % 4)\r\n        progress.task_update(i, stage=\"processing\")\r\n        # ... do work ...\r\n        progress.task_finish(i)\r\n```\r\n\r\n## Joblib Integration\r\n\r\n```python\r\nfrom joblib import Parallel, delayed\r\nimport progressbox as pbox\r\n\r\n# Your existing joblib code, now with progress!\r\nresults = pbox.adapters.joblib_progress(\r\n    items,\r\n    process_func,\r\n    n_jobs=6,\r\n    config=pbox.Config(total=len(items))\r\n)\r\n```\r\n\r\n## Documentation\r\n\r\nSee [full documentation](https://progressbox.readthedocs.io) for more examples and API reference.\r\n\r\n## License\r\n\r\nMIT License - see LICENSE file for details.\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Stage-aware progress monitoring for parallel Python jobs",
    "version": "0.1.0a2",
    "project_urls": null,
    "split_keywords": [
        "progress",
        " parallel",
        " monitoring",
        " multiprocessing",
        " joblib"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d2b24f7477bb0a12a72520c27569854b23b3c250be7283915745a7a2e291070d",
                "md5": "ce915242b3f7c3e5ae9c06613f66703f",
                "sha256": "65e6f2784ae875a8381a2951e428b2c9e6e9ba8173c00b151ce1d02ba9ab836a"
            },
            "downloads": -1,
            "filename": "progressbox-0.1.0a2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "ce915242b3f7c3e5ae9c06613f66703f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 56880,
            "upload_time": "2025-09-05T00:25:39",
            "upload_time_iso_8601": "2025-09-05T00:25:39.130193Z",
            "url": "https://files.pythonhosted.org/packages/d2/b2/4f7477bb0a12a72520c27569854b23b3c250be7283915745a7a2e291070d/progressbox-0.1.0a2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0982ceb4da402ab23c0c191ac1112df9bc761510bb16a21bfc1fc2bc312b2143",
                "md5": "e9a6a3363106087813d86777fdeec419",
                "sha256": "8852701a591a407f550ac6757d0c36061dfd52c574d541a830c0c2c69c2975ea"
            },
            "downloads": -1,
            "filename": "progressbox-0.1.0a2.tar.gz",
            "has_sig": false,
            "md5_digest": "e9a6a3363106087813d86777fdeec419",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 50470,
            "upload_time": "2025-09-05T00:25:40",
            "upload_time_iso_8601": "2025-09-05T00:25:40.245273Z",
            "url": "https://files.pythonhosted.org/packages/09/82/ceb4da402ab23c0c191ac1112df9bc761510bb16a21bfc1fc2bc312b2143/progressbox-0.1.0a2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-05 00:25:40",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "progressbox"
}