Metadata-Version: 2.4
Name: liblaf-grapes
Version: 8.4.1
Summary: 🍇 Supercharge your Python with rich logging, precise timing, and seamless serialization.
Project-URL: Changelog, https://github.com/liblaf/grapes/blob/main/CHANGELOG.md
Project-URL: Documentation, https://liblaf-grapes.readthedocs.io/
Project-URL: Homepage, https://github.com/liblaf/grapes
Project-URL: Issue Tracker, https://github.com/liblaf/grapes/issues
Project-URL: Release Notes, https://github.com/liblaf/grapes/releases
Project-URL: Source Code, https://github.com/liblaf/grapes
Author-email: liblaf <30631553+liblaf@users.noreply.github.com>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: File Formats
Classifier: Topic :: File Formats :: JSON
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Bug Tracking
Classifier: Topic :: Software Development :: Debuggers
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System
Classifier: Topic :: System :: Logging
Classifier: Topic :: Text Processing
Classifier: Topic :: Text Processing :: Filters
Classifier: Topic :: Utilities
Classifier: Typing :: Typed
Requires-Python: >=3.12
Requires-Dist: about-time<5,>=4
Requires-Dist: asttokens<4,>=3
Requires-Dist: attrs<26,>=25
Requires-Dist: autoregistry<2,>=1
Requires-Dist: cachetools<7,>=6
Requires-Dist: cytoolz<2,>=1
Requires-Dist: environs<15,>=14
Requires-Dist: executing<3,>=2
Requires-Dist: fieldz<0.2,>=0.1
Requires-Dist: joblib<2,>=1
Requires-Dist: lazy-loader<0.5,>=0.4
Requires-Dist: msgspec[toml,yaml]<0.20,>=0.19
Requires-Dist: packaging<26,>=25
Requires-Dist: pendulum<4,>=3
Requires-Dist: platformdirs<5,>=4
Requires-Dist: pydantic<3,>=2
Requires-Dist: rich<15,>=14
Requires-Dist: typing-extensions<5,>=4
Requires-Dist: wadler-lindig<0.2,>=0.1
Requires-Dist: wrapt<3,>=2
Description-Content-Type: text/markdown

<div align="center" markdown>
<a name="readme-top"></a>

![grapes](https://socialify.git.ci/liblaf/grapes/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fraw.githubusercontent.com%2Fmicrosoft%2Ffluentui-emoji%2Frefs%2Fheads%2Fmain%2Fassets%2FGrapes%2F3D%2Fgrapes_3d.png&name=1&owner=1&pattern=Transparent&pulls=1&stargazers=1&theme=Auto)

**[Explore the docs »](https://liblaf.github.io/grapes/)**

<!-- tangerine-start: badges/python.md -->

[![codecov](https://codecov.io/gh/liblaf/grapes/graph/badge.svg)](https://codecov.io/gh/liblaf/grapes)
[![MegaLinter](https://github.com/liblaf/grapes/actions/workflows/mega-linter.yaml/badge.svg)](https://github.com/liblaf/grapes/actions/workflows/mega-linter.yaml)
[![Test](https://github.com/liblaf/grapes/actions/workflows/test.yaml/badge.svg)](https://github.com/liblaf/grapes/actions/workflows/test.yaml)
[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/liblaf/grapes/main.svg)](https://results.pre-commit.ci/latest/github/liblaf/grapes/main)
[![CodSpeed Badge](https://img.shields.io/endpoint?url=https://codspeed.io/badge.json)](https://codspeed.io/liblaf/grapes)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
[![PyPI - Downloads](https://img.shields.io/pypi/dm/liblaf-grapes?logo=PyPI&label=Downloads)](https://pypi.org/project/liblaf-grapes)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/liblaf-grapes?logo=Python&label=Python)](https://pypi.org/project/liblaf-grapes)
[![PyPI - Version](https://img.shields.io/pypi/v/liblaf-grapes?logo=PyPI&label=PyPI)](https://pypi.org/project/liblaf-grapes)

<!-- tangerine-end -->

[Changelog](https://github.com/liblaf/grapes/blob/main/CHANGELOG.md) · [Report Bug](https://github.com/liblaf/grapes/issues) · [Request Feature](https://github.com/liblaf/grapes/issues)

![](https://cdn.jsdelivr.net/gh/andreasbm/readme/assets/lines/rainbow.png)

</div>

## ✨ Features

- 🎨 **Rich Logging:** Beautiful, structured logging with loguru integration, multiple output formats (rich console, JSONL, file), and customizable profiles for different environments;
- ⏱️ **Precise Timing:** Easy-to-use timing decorators and context managers with detailed statistics (mean, median, stdev) and automatic logging integration;
- 📦 **Multi-Format Serialization:** Unified interface for JSON, TOML, and YAML serialization with Pydantic model support and customizable encoding/decoding hooks;
- 👥 **Human-Readable Formats:** Intelligent conversion of numbers, durations, and throughput into human-readable strings with appropriate units and precision;
- 🔄 **Progress Tracking:** Integrated progress bars with rich visualization, timing integration, and parallel processing support through joblib;
- ⚙️ **Smart Configuration:** Environment-aware configuration system using Pydantic with automatic environment variable parsing and type-safe settings.

## 📦 Installation

To install `liblaf-grapes`, run the following command:

```bash
uv add liblaf-grapes
```

## ⌨️ Local Development

You can use Github Codespaces for online development:

[![](https://github.com/codespaces/badge.svg)](https://codespaces.new/liblaf/grapes)

Or clone it for local development:

```bash
gh repo clone liblaf/grapes
cd grapes
mise run install
```

## 🤝 Contributing

Contributions of all types are more than welcome, if you are interested in contributing code, feel free to check out our GitHub [Issues](https://github.com/liblaf/grapes/issues) to get stuck in to show us what you're made of.

[![PR Welcome](https://img.shields.io/badge/%F0%9F%A4%AF%20PR%20WELCOME-%E2%86%92-ffcb47?labelColor=black&style=for-the-badge)](https://github.com/liblaf/grapes/pulls)

[![Contributors](https://contrib.nn.ci/api?repo=liblaf/grapes)](https://github.com/liblaf/grapes/graphs/contributors)

## 🔗 More Projects

<!-- tangerine-start: projects/fruits.md -->

- **[🍇 Grapes](https://github.com/liblaf/grapes)** - Supercharge your Python with rich logging, precise timing, and seamless serialization.
- **[🍉 Melon](https://github.com/liblaf/melon)** - A comprehensive Python library for 3D mesh processing with advanced I/O capabilities, proximity analysis, and integration with external mesh processing tools.
- **[🍊 Tangerine](https://github.com/liblaf/tangerine)** - Squeeze dynamic content into your files with Tangerine's template magic.
- **[🍋‍🟩 Lime](https://github.com/liblaf/lime)** - AI-powered Git commit assistant and repository documentation generator
- **[🍎 Apple](https://github.com/liblaf/apple)** - A JAX and Warp library for differentiable physics simulation, featuring elastic energy models and finite element methods.
- **[🍒 Cherries](https://github.com/liblaf/cherries)** - Sweet experiment tracking with Comet, DVC, and Git integration.
<!-- tangerine-end -->

---

#### 📝 License

Copyright © 2025 [liblaf](https://github.com/liblaf). <br />
This project is [MIT](https://github.com/liblaf/grapes/blob/main/LICENSE) licensed.
