{"id":18404455,"url":"https://github.com/durandtibo/coola","last_synced_at":"2026-07-04T06:06:31.087Z","repository":{"id":144684527,"uuid":"582456937","full_name":"durandtibo/coola","owner":"durandtibo","description":"Python library to check if two complex/nested objects are equal or not.","archived":false,"fork":false,"pushed_at":"2026-07-02T15:51:51.000Z","size":14347,"stargazers_count":1,"open_issues_count":7,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-07-02T16:10:34.674Z","etag":null,"topics":["equality","nested-objects","python"],"latest_commit_sha":null,"homepage":"https://durandtibo.github.io/coola/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/durandtibo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-12-26T22:33:45.000Z","updated_at":"2026-07-02T14:09:34.000Z","dependencies_parsed_at":"2023-10-04T10:41:25.987Z","dependency_job_id":"4874585a-91e5-49b7-be8e-1793dd70c0a5","html_url":"https://github.com/durandtibo/coola","commit_stats":null,"previous_names":[],"tags_count":70,"template":false,"template_full_name":null,"purl":"pkg:github/durandtibo/coola","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/durandtibo%2Fcoola","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/durandtibo%2Fcoola/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/durandtibo%2Fcoola/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/durandtibo%2Fcoola/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/durandtibo","download_url":"https://codeload.github.com/durandtibo/coola/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/durandtibo%2Fcoola/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35111462,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-04T02:00:05.987Z","response_time":113,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["equality","nested-objects","python"],"created_at":"2024-11-06T02:52:01.094Z","updated_at":"2026-07-04T06:06:31.079Z","avatar_url":"https://github.com/durandtibo.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# coola\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/durandtibo/coola/actions/workflows/ci.yaml\"\u003e\n        \u003cimg alt=\"CI\" src=\"https://github.com/durandtibo/coola/actions/workflows/ci.yaml/badge.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/durandtibo/coola/actions/workflows/nightly-tests.yaml\"\u003e\n        \u003cimg alt=\"Nightly Tests\" src=\"https://github.com/durandtibo/coola/actions/workflows/nightly-tests.yaml/badge.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/durandtibo/coola/actions/workflows/nightly-package.yaml\"\u003e\n        \u003cimg alt=\"Nightly Package Tests\" src=\"https://github.com/durandtibo/coola/actions/workflows/nightly-package.yaml/badge.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://codecov.io/gh/durandtibo/coola\"\u003e\n        \u003cimg alt=\"Codecov\" src=\"https://codecov.io/gh/durandtibo/coola/branch/main/graph/badge.svg\"\u003e\n    \u003c/a\u003e\n    \u003cbr/\u003e\n    \u003ca href=\"https://durandtibo.github.io/coola/\"\u003e\n        \u003cimg alt=\"Documentation\" src=\"https://github.com/durandtibo/coola/actions/workflows/docs.yaml/badge.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://durandtibo.github.io/coola/dev/\"\u003e\n        \u003cimg alt=\"Documentation\" src=\"https://github.com/durandtibo/coola/actions/workflows/docs-dev.yaml/badge.svg\"\u003e\n    \u003c/a\u003e\n    \u003cbr/\u003e\n    \u003ca href=\"https://github.com/psf/black\"\u003e\n        \u003cimg  alt=\"Code style: black\" src=\"https://img.shields.io/badge/code%20style-black-000000.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://google.github.io/styleguide/pyguide.html#s3.8-comments-and-docstrings\"\u003e\n        \u003cimg  alt=\"Doc style: google\" src=\"https://img.shields.io/badge/%20style-google-3666d6.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/astral-sh/ruff\"\u003e\n        \u003cimg src=\"https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json\" alt=\"Ruff\" style=\"max-width:100%;\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/guilatrova/tryceratops\"\u003e\n        \u003cimg  alt=\"try/except style: tryceratops\" src=\"https://img.shields.io/badge/try%2Fexcept%20style-tryceratops%20%F0%9F%A6%96%E2%9C%A8-black\"\u003e\n    \u003c/a\u003e\n    \u003cbr/\u003e\n    \u003ca href=\"https://pypi.org/project/coola/\"\u003e\n        \u003cimg alt=\"PYPI version\" src=\"https://img.shields.io/pypi/v/coola\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://pypi.org/project/coola/\"\u003e\n        \u003cimg alt=\"Python\" src=\"https://img.shields.io/pypi/pyversions/coola.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://opensource.org/licenses/BSD-3-Clause\"\u003e\n        \u003cimg alt=\"BSD-3-Clause\" src=\"https://img.shields.io/pypi/l/coola\"\u003e\n    \u003c/a\u003e\n    \u003cbr/\u003e\n    \u003ca href=\"https://pepy.tech/project/coola\"\u003e\n        \u003cimg  alt=\"Downloads\" src=\"https://static.pepy.tech/badge/coola\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://pepy.tech/project/coola\"\u003e\n        \u003cimg  alt=\"Monthly downloads\" src=\"https://static.pepy.tech/badge/coola/month\"\u003e\n    \u003c/a\u003e\n    \u003cbr/\u003e\n\u003c/p\u003e\n\n## Overview\n\n`coola` is a lightweight Python library that makes it easy to compare complex and nested data\nstructures.\nIt provides simple, extensible functions to check equality between objects containing\n[PyTorch tensors](https://pytorch.org/docs/stable/tensors.html),\n[NumPy arrays](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html),\n[pandas](https://pandas.pydata.org/)/[polars](https://www.pola.rs/) DataFrames, and other scientific\ncomputing objects.\n\n**Quick Links:**\n\n- [Documentation](https://durandtibo.github.io/coola/)\n- [User Guide](https://durandtibo.github.io/coola/uguide/equality)\n- [Installation](#installation)\n- [Features](#features)\n- [Contributing](#contributing)\n- [License](#license)\n- [Security](SECURITY.md)\n\n## Why coola?\n\nPython's native equality operator (`==`) doesn't work well with complex nested structures\ncontaining tensors, arrays, or DataFrames. You'll often encounter errors or unexpected behavior.\n`coola` solves this with intuitive comparison functions:\n\n**Check exact equality:**\n\n```pycon\n\u003e\u003e\u003e import numpy as np\n\u003e\u003e\u003e import torch\n\u003e\u003e\u003e from coola.equality import objects_are_equal\n\u003e\u003e\u003e data1 = {\"torch\": torch.ones(2, 3), \"numpy\": np.zeros((2, 3))}\n\u003e\u003e\u003e data2 = {\"torch\": torch.ones(2, 3), \"numpy\": np.zeros((2, 3))}\n\u003e\u003e\u003e objects_are_equal(data1, data2)\nTrue\n\n```\n\n**Compare with numerical tolerance:**\n\n```pycon\n\u003e\u003e\u003e from coola.equality import objects_are_allclose\n\u003e\u003e\u003e data1 = {\"value\": 1.0}\n\u003e\u003e\u003e data2 = {\"value\": 1.0 + 1e-9}\n\u003e\u003e\u003e objects_are_allclose(data1, data2)\nTrue\n\n```\n\n**Debug differences easily:**\n\n```pycon\n\u003e\u003e\u003e from coola.equality import objects_are_equal\n\u003e\u003e\u003e actual = {\"users\": [{\"id\": 1, \"score\": 95}, {\"id\": 2, \"score\": 87}]}\n\u003e\u003e\u003e expected = {\"users\": [{\"id\": 1, \"score\": 95}, {\"id\": 2, \"score\": 88}]}\n\u003e\u003e\u003e objects_are_equal(actual, expected, show_difference=True)\nFalse\n\n```\n\nLog output\n\n```textmate\nnumbers are different:\n  actual   : 87\n  expected : 88\nmappings have different values for key 'score'\nsequences have different values at index 1\nmappings have different values for key 'users'\n```\n\nSee the [user guide](https://durandtibo.github.io/coola/uguide/equality) for detailed examples.\n\n## Features\n\n`coola` provides a comprehensive set of utilities for working with complex data structures:\n\n### 🔍 **Equality Comparison**\n\nCompare complex nested objects with support for multiple data types:\n\n- **Exact equality**: `objects_are_equal()` for strict comparison\n- **Approximate equality**: `objects_are_allclose()` for numerical tolerance\n- **User-friendly difference reporting**: Clear, structured output showing exactly what differs\n- **Extensible**: Add custom comparators for your own types\n\n[Learn more →](https://durandtibo.github.io/coola/uguide/equality)\n\n**Supported types:**\n[JAX](https://jax.readthedocs.io/) •\n[NumPy](https://numpy.org/) •\n[pandas](https://pandas.pydata.org/) •\n[polars](https://www.pola.rs/) •\n[PyArrow](https://arrow.apache.org/docs/python/) •\n[PyTorch](https://pytorch.org/) •\n[xarray](https://docs.xarray.dev/) •\nPython built-ins (dict, list, tuple, set, etc.)\n\n[See all type-specific comparison rules →](https://durandtibo.github.io/coola/uguide/equality#type-specific-behavior)\n\n### 📊 **Data Summarization**\n\nGenerate human-readable summaries of nested data structures for debugging and logging:\n\n- Configurable depth control\n- Type-specific formatting\n- Truncation for large collections\n\n[Learn more →](https://durandtibo.github.io/coola/uguide/summary)\n\n### 🔄 **Data Conversion**\n\nTransform data between different nested structures:\n\n- Convert between list-of-dicts and dict-of-lists formats\n- Useful for working with tabular data and different data representations\n\n[Learn more →](https://durandtibo.github.io/coola/uguide/nested)\n\n### 🗂️ **Mapping Utilities**\n\nWork with nested dictionaries efficiently:\n\n- Flatten nested dictionaries into flat key-value pairs\n- Extract specific values from complex nested structures\n- Filter dictionary keys based on patterns or criteria\n\n[Learn more →](https://durandtibo.github.io/coola/uguide/nested)\n\n### 🔁 **Iteration**\n\nTraverse nested data structures systematically:\n\n- Depth-first search (DFS) traversal for nested containers\n- Breadth-first search (BFS) traversal for level-by-level processing\n- Filter and extract specific types from heterogeneous collections\n\n[Learn more →](https://durandtibo.github.io/coola/uguide/iterator)\n\n### 📈 **Reduction**\n\nCompute statistics on sequences with flexible backends:\n\n- Calculate min, max, mean, median, quantile, std on numeric sequences\n- Support for multiple backends: native Python, NumPy, PyTorch\n- Consistent API regardless of backend choice\n\n[Learn more →](https://durandtibo.github.io/coola/uguide/reducer)\n\n## Installation\n\nWe highly recommend installing\n`coola` in\na [virtual environment](https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/)\nto avoid dependency conflicts.\n\n### Using uv (recommended)\n\n[`uv`](https://docs.astral.sh/uv/) is a fast Python package installer and resolver:\n\n```shell\nuv pip install coola\n```\n\n**Install with all optional dependencies:**\n\n```shell\nuv pip install coola[all]\n```\n\n**Install with specific optional dependencies:**\n\n```shell\nuv pip install coola[numpy,torch]  # with NumPy and PyTorch\n```\n\n### Using pip\n\nAlternatively, you can use `pip`:\n\n```shell\npip install coola\n```\n\n**Install with all optional dependencies:**\n\n```shell\npip install coola[all]\n```\n\n**Install with specific optional dependencies:**\n\n```shell\npip install coola[numpy,torch]  # with NumPy and PyTorch\n```\n\n### Requirements\n\n- **Python**: 3.10 or higher\n- **Core dependencies**: None (fully optional dependencies)\n\n**Optional dependencies** (install with `coola[all]`):\n[JAX](https://jax.readthedocs.io/) •\n[NumPy](https://numpy.org/) •\n[pandas](https://pandas.pydata.org/) •\n[polars](https://www.pola.rs/) •\n[PyArrow](https://arrow.apache.org/docs/python/) •\n[PyTorch](https://pytorch.org/) •\n[xarray](https://docs.xarray.dev/)\n\nFor detailed installation instructions, compatibility information, and alternative installation\nmethods, see the [installation guide](https://durandtibo.github.io/coola/get_started).\n\n### Compatibility Matrix\n\n| `coola` | `jax`\u003csup\u003e*\u003c/sup\u003e | `numpy`\u003csup\u003e*\u003c/sup\u003e | `packaging`\u003csup\u003e*\u003c/sup\u003e | `pandas`\u003csup\u003e*\u003c/sup\u003e | `polars`\u003csup\u003e*\u003c/sup\u003e | `pyarrow`\u003csup\u003e*\u003c/sup\u003e | `torch`\u003csup\u003e*\u003c/sup\u003e | `xarray`\u003csup\u003e*\u003c/sup\u003e | `python` |\n|---------|-------------------|---------------------|-------------------------|----------------------|----------------------|-----------------------|---------------------|----------------------|----------|\n| `main`  | `\u003e=0.5.0,\u003c1.0`    | `\u003e=1.24,\u003c3.0`       | `\u003e=22.0`                | `\u003e=2.0,\u003c4.0`         | `\u003e=1.0,\u003c2.0`         | `\u003e=11.0`              | `\u003e=2.0,\u003c3.0`        | `\u003e=2024.1`           | `\u003e=3.10` |\n| `1.1.8` | `\u003e=0.5.0,\u003c1.0`    | `\u003e=1.24,\u003c3.0`       | `\u003e=22.0`                | `\u003e=2.0,\u003c4.0`         | `\u003e=1.0,\u003c2.0`         | `\u003e=11.0`              | `\u003e=2.0,\u003c3.0`        | `\u003e=2024.1`           | `\u003e=3.10` |\n| `1.1.7` | `\u003e=0.5.0,\u003c1.0`    | `\u003e=1.24,\u003c3.0`       | `\u003e=22.0`                | `\u003e=2.0,\u003c4.0`         | `\u003e=1.0,\u003c2.0`         | `\u003e=11.0`              | `\u003e=2.0,\u003c3.0`        | `\u003e=2024.1`           | `\u003e=3.10` |\n| `1.1.6` | `\u003e=0.5.0,\u003c1.0`    | `\u003e=1.24,\u003c3.0`       | `\u003e=22.0`                | `\u003e=2.0,\u003c4.0`         | `\u003e=1.0,\u003c2.0`         | `\u003e=11.0`              | `\u003e=2.0,\u003c3.0`        | `\u003e=2024.1`           | `\u003e=3.10` |\n| `1.1.5` | `\u003e=0.5.0,\u003c1.0`    | `\u003e=1.24,\u003c3.0`       | `\u003e=22.0`                | `\u003e=2.0,\u003c4.0`         | `\u003e=1.0,\u003c2.0`         | `\u003e=11.0`              | `\u003e=2.0,\u003c3.0`        | `\u003e=2024.1`           | `\u003e=3.10` |\n| `1.1.4` | `\u003e=0.5.0,\u003c1.0`    | `\u003e=1.24,\u003c3.0`       | `\u003e=22.0`                | `\u003e=2.0,\u003c4.0`         | `\u003e=1.0,\u003c2.0`         | `\u003e=11.0`              | `\u003e=2.0,\u003c3.0`        | `\u003e=2024.1`           | `\u003e=3.10` |\n| `1.1.3` | `\u003e=0.5.0,\u003c1.0`    | `\u003e=1.24,\u003c3.0`       | `\u003e=22.0`                | `\u003e=2.0,\u003c4.0`         | `\u003e=1.0,\u003c2.0`         | `\u003e=11.0`              | `\u003e=2.0,\u003c3.0`        | `\u003e=2024.1`           | `\u003e=3.10` |\n| `1.1.2` | `\u003e=0.5.0,\u003c1.0`    | `\u003e=1.24,\u003c3.0`       | `\u003e=22.0`                | `\u003e=2.0,\u003c4.0`         | `\u003e=1.0,\u003c2.0`         | `\u003e=11.0`              | `\u003e=2.0,\u003c3.0`        | `\u003e=2024.1`           | `\u003e=3.10` |\n| `1.1.1` | `\u003e=0.5.0,\u003c1.0`    | `\u003e=1.24,\u003c3.0`       | `\u003e=22.0`                | `\u003e=2.0,\u003c4.0`         | `\u003e=1.0,\u003c2.0`         | `\u003e=11.0`              | `\u003e=2.0,\u003c3.0`        | `\u003e=2024.1`           | `\u003e=3.10` |\n| `1.1.0` | `\u003e=0.5.0,\u003c1.0`    | `\u003e=1.24,\u003c3.0`       | `\u003e=22.0`                | `\u003e=2.0,\u003c4.0`         | `\u003e=1.0,\u003c2.0`         | `\u003e=11.0`              | `\u003e=2.0,\u003c3.0`        | `\u003e=2024.1`           | `\u003e=3.10` |\n| `1.0.1` | `\u003e=0.5.0,\u003c1.0`    | `\u003e=1.24,\u003c3.0`       | `\u003e=22.0`                | `\u003e=2.0,\u003c4.0`         | `\u003e=1.0,\u003c2.0`         | `\u003e=11.0`              | `\u003e=2.0,\u003c3.0`        | `\u003e=2024.1`           | `\u003e=3.10` |\n| `1.0.0` | `\u003e=0.5.0,\u003c1.0`    | `\u003e=1.24,\u003c3.0`       | `\u003e=22.0`                | `\u003e=2.0,\u003c3.0`         | `\u003e=1.0,\u003c2.0`         | `\u003e=11.0,\u003c23.0`        | `\u003e=2.0,\u003c3.0`        | `\u003e=2024.1`           | `\u003e=3.10` |\n\n\u003csup\u003e*\u003c/sup\u003e indicates an optional dependency\n\n\u003cdetails\u003e\n    \u003csummary\u003eolder versions\u003c/summary\u003e\n\n| `coola`  | `jax`\u003csup\u003e*\u003c/sup\u003e | `numpy`\u003csup\u003e*\u003c/sup\u003e | `packaging`\u003csup\u003e*\u003c/sup\u003e | `pandas`\u003csup\u003e*\u003c/sup\u003e | `polars`\u003csup\u003e*\u003c/sup\u003e | `pyarrow`\u003csup\u003e*\u003c/sup\u003e | `torch`\u003csup\u003e*\u003c/sup\u003e | `xarray`\u003csup\u003e*\u003c/sup\u003e | `python`       |\n|----------|-------------------|---------------------|-------------------------|----------------------|----------------------|-----------------------|---------------------|----------------------|----------------|\n| `0.11.1` | `\u003e=0.5.0,\u003c1.0`    | `\u003e=1.24,\u003c3.0`       | `\u003e=22.0`                | `\u003e=2.0,\u003c3.0`         | `\u003e=1.0,\u003c2.0`         | `\u003e=11.0,\u003c22.0`        | `\u003e=2.0,\u003c3.0`        | `\u003e=2024.1`           | `\u003e=3.10`       |\n| `0.11.0` | `\u003e=0.5.0,\u003c1.0`    | `\u003e=1.24,\u003c3.0`       | `\u003e=22.0`                | `\u003e=2.0,\u003c3.0`         | `\u003e=1.0,\u003c2.0`         | `\u003e=11.0,\u003c22.0`        | `\u003e=2.0,\u003c3.0`        | `\u003e=2023.1`           | `\u003e=3.10`       |\n| `0.10.0` | `\u003e=0.5.0,\u003c1.0`    | `\u003e=1.24,\u003c3.0`       | `\u003e=22.0`                | `\u003e=2.0,\u003c3.0`         | `\u003e=1.0,\u003c2.0`         | `\u003e=11.0,\u003c22.0`        | `\u003e=2.0,\u003c3.0`        | `\u003e=2023.1`           | `\u003e=3.10`       |\n| `0.9.1`  | `\u003e=0.5.0,\u003c1.0`    | `\u003e=1.24,\u003c3.0`       | `\u003e=22.0,\u003c26.0`          | `\u003e=2.0,\u003c3.0`         | `\u003e=1.0,\u003c2.0`         | `\u003e=11.0,\u003c22.0`        | `\u003e=2.0,\u003c3.0`        | `\u003e=2023.1`           | `\u003e=3.10,\u003c3.15` |\n| `0.9.0`  | `\u003e=0.4.6,\u003c1.0`    | `\u003e=1.24,\u003c3.0`       | `\u003e=22.0,\u003c26.0`          | `\u003e=2.0,\u003c3.0`         | `\u003e=1.0,\u003c2.0`         | `\u003e=11.0,\u003c20.0`        | `\u003e=2.0,\u003c3.0`        | `\u003e=2023.1`           | `\u003e=3.9,\u003c3.14`  |\n| `0.8.7`  | `\u003e=0.4.6,\u003c1.0`    | `\u003e=1.22,\u003c3.0`       | `\u003e=21.0,\u003c26.0`          | `\u003e=1.5,\u003c3.0`         | `\u003e=1.0,\u003c2.0`         | `\u003e=10.0,\u003c20.0`        | `\u003e=1.11,\u003c3.0`       | `\u003e=2023.1`           | `\u003e=3.9,\u003c3.14`  |\n| `0.8.6`  | `\u003e=0.4.6,\u003c1.0`    | `\u003e=1.21,\u003c3.0`       |                         | `\u003e=1.3,\u003c3.0`         | `\u003e=0.18.3,\u003c2.0`      | `\u003e=10.0,\u003c20.0`        | `\u003e=1.11,\u003c3.0`       | `\u003e=2023.1`           | `\u003e=3.9,\u003c3.14`  |\n| `0.8.5`  | `\u003e=0.4.6,\u003c1.0`    | `\u003e=1.21,\u003c3.0`       |                         | `\u003e=1.3,\u003c3.0`         | `\u003e=0.18.3,\u003c2.0`      | `\u003e=10.0,\u003c19.0`        | `\u003e=1.11,\u003c3.0`       | `\u003e=2023.1`           | `\u003e=3.9,\u003c3.14`  |\n| `0.8.4`  | `\u003e=0.4.6,\u003c1.0`    | `\u003e=1.21,\u003c3.0`       |                         | `\u003e=1.3,\u003c3.0`         | `\u003e=0.18.3,\u003c2.0`      | `\u003e=10.0,\u003c18.0`        | `\u003e=1.11,\u003c3.0`       | `\u003e=2023.1`           | `\u003e=3.9,\u003c3.14`  |\n| `0.8.3`  | `\u003e=0.4.1,\u003c1.0`    | `\u003e=1.21,\u003c3.0`       |                         | `\u003e=1.3,\u003c3.0`         | `\u003e=0.18.3,\u003c2.0`      | `\u003e=10.0,\u003c18.0`        | `\u003e=1.11,\u003c3.0`       | `\u003e=2023.1`           | `\u003e=3.9,\u003c3.13`  |\n| `0.8.2`  | `\u003e=0.4.1,\u003c1.0`    | `\u003e=1.21,\u003c3.0`       |                         | `\u003e=1.3,\u003c3.0`         | `\u003e=0.18.3,\u003c2.0`      | `\u003e=10.0,\u003c18.0`        | `\u003e=1.11,\u003c3.0`       | `\u003e=2023.1`           | `\u003e=3.9,\u003c3.13`  |\n| `0.8.1`  | `\u003e=0.4.1,\u003c1.0`    | `\u003e=1.21,\u003c3.0`       |                         | `\u003e=1.3,\u003c3.0`         | `\u003e=0.18.3,\u003c2.0`      | `\u003e=10.0,\u003c18.0`        | `\u003e=1.11,\u003c3.0`       | `\u003e=2023.1`           | `\u003e=3.9,\u003c3.13`  |\n| `0.8.0`  | `\u003e=0.4.1,\u003c1.0`    | `\u003e=1.21,\u003c3.0`       |                         | `\u003e=1.3,\u003c3.0`         | `\u003e=0.18.3,\u003c2.0`      | `\u003e=10.0,\u003c18.0`        | `\u003e=1.11,\u003c3.0`       | `\u003e=2023.1`           | `\u003e=3.9,\u003c3.13`  |\n| `0.7.4`  | `\u003e=0.4.1,\u003c1.0`    | `\u003e=1.21,\u003c3.0`       |                         | `\u003e=1.3,\u003c3.0`         | `\u003e=0.18.3,\u003c2.0`      | `\u003e=10.0,\u003c18.0`        | `\u003e=1.11,\u003c3.0`       | `\u003e=2023.1`           | `\u003e=3.9,\u003c3.13`  |\n| `0.7.3`  | `\u003e=0.4.1,\u003c1.0`    | `\u003e=1.21,\u003c3.0`       |                         | `\u003e=1.3,\u003c3.0`         | `\u003e=0.18.3,\u003c2.0`      |                       | `\u003e=1.11,\u003c3.0`       | `\u003e=2023.1`           | `\u003e=3.9,\u003c3.13`  |\n| `0.7.2`  | `\u003e=0.4.1,\u003c1.0`    | `\u003e=1.21,\u003c3.0`       |                         | `\u003e=1.3,\u003c3.0`         | `\u003e=0.18.3,\u003c2.0`      |                       | `\u003e=1.11,\u003c3.0`       | `\u003e=2023.1`           | `\u003e=3.9,\u003c3.13`  |\n| `0.7.1`  | `\u003e=0.4.1,\u003c1.0`    | `\u003e=1.21,\u003c3.0`       |                         | `\u003e=1.3,\u003c3.0`         | `\u003e=0.18.3,\u003c1.0`      |                       | `\u003e=1.10,\u003c3.0`       | `\u003e=2023.1`           | `\u003e=3.9,\u003c3.13`  |\n| `0.7.0`  | `\u003e=0.4.1,\u003c1.0`    | `\u003e=1.21,\u003c2.0`       |                         | `\u003e=1.3,\u003c3.0`         | `\u003e=0.18.3,\u003c1.0`      |                       | `\u003e=1.10,\u003c3.0`       | `\u003e=2023.1`           | `\u003e=3.9,\u003c3.13`  |\n| `0.6.2`  | `\u003e=0.4.1,\u003c1.0`    | `\u003e=1.21,\u003c2.0`       |                         | `\u003e=1.3,\u003c3.0`         | `\u003e=0.18.3,\u003c1.0`      |                       | `\u003e=1.10,\u003c3.0`       | `\u003e=2023.1`           | `\u003e=3.9,\u003c3.13`  |\n| `0.6.1`  | `\u003e=0.4.1,\u003c1.0`    | `\u003e=1.21,\u003c2.0`       |                         | `\u003e=1.3,\u003c3.0`         | `\u003e=0.18.3,\u003c1.0`      |                       | `\u003e=1.10,\u003c3.0`       | `\u003e=2023.1`           | `\u003e=3.9,\u003c3.13`  |\n| `0.6.0`  | `\u003e=0.4.1,\u003c1.0`    | `\u003e=1.21,\u003c2.0`       |                         | `\u003e=1.3,\u003c3.0`         | `\u003e=0.18.3,\u003c1.0`      |                       | `\u003e=1.10,\u003c3.0`       | `\u003e=2023.1`           | `\u003e=3.9,\u003c3.13`  |\n| `0.5.0`  | `\u003e=0.4.1,\u003c0.5`    | `\u003e=1.21,\u003c1.27`      |                         | `\u003e=1.3,\u003c2.2`         | `\u003e=0.18.3,\u003c1.0`      |                       | `\u003e=1.10,\u003c2.2`       | `\u003e=2023.1,\u003c2023.13`  | `\u003e=3.9,\u003c3.13`  |\n| `0.4.0`  | `\u003e=0.4.1,\u003c0.5`    | `\u003e=1.21,\u003c1.27`      |                         | `\u003e=1.3,\u003c2.2`         | `\u003e=0.18.3,\u003c1.0`      |                       | `\u003e=1.10,\u003c2.2`       | `\u003e=2023.1,\u003c2023.13`  | `\u003e=3.9,\u003c3.13`  |\n| `0.3.1`  | `\u003e=0.4.1,\u003c0.5`    | `\u003e=1.21,\u003c1.27`      |                         | `\u003e=1.3,\u003c2.2`         | `\u003e=0.18.3,\u003c1.0`      |                       | `\u003e=1.10,\u003c2.2`       | `\u003e=2023.1,\u003c2023.13`  | `\u003e=3.9,\u003c3.13`  |\n| `0.3.0`  | `\u003e=0.4.1,\u003c0.5`    | `\u003e=1.21,\u003c1.27`      |                         | `\u003e=1.3,\u003c2.2`         | `\u003e=0.18.3,\u003c1.0`      |                       | `\u003e=1.10,\u003c2.2`       | `\u003e=2023.1,\u003c2023.13`  | `\u003e=3.9,\u003c3.13`  |\n| `0.2.2`  | `\u003e=0.4.1,\u003c0.5`    | `\u003e=1.21,\u003c1.27`      |                         | `\u003e=1.3,\u003c2.2`         | `\u003e=0.18.3,\u003c1.0`      |                       | `\u003e=1.10,\u003c2.2`       | `\u003e=2023.1,\u003c2023.13`  | `\u003e=3.9,\u003c3.13`  |\n| `0.2.1`  | `\u003e=0.4.1,\u003c0.5`    | `\u003e=1.21,\u003c1.27`      |                         | `\u003e=1.3,\u003c2.2`         | `\u003e=0.18.3,\u003c1.0`      |                       | `\u003e=1.10,\u003c2.2`       | `\u003e=2023.1,\u003c2023.13`  | `\u003e=3.9,\u003c3.13`  |\n| `0.2.0`  | `\u003e=0.4.1,\u003c0.5`    | `\u003e=1.21,\u003c1.27`      |                         | `\u003e=1.3,\u003c2.2`         | `\u003e=0.18.3,\u003c1.0`      |                       | `\u003e=1.10,\u003c2.2`       | `\u003e=2023.1,\u003c2023.13`  | `\u003e=3.9,\u003c3.13`  |\n| `0.1.2`  | `\u003e=0.4.1,\u003c0.5`    | `\u003e=1.21,\u003c1.27`      |                         | `\u003e=1.3,\u003c2.2`         | `\u003e=0.18.3,\u003c0.21`     |                       | `\u003e=1.10,\u003c2.2`       | `\u003e=2023.1,\u003c2023.13`  | `\u003e=3.9,\u003c3.13`  |\n| `0.1.1`  | `\u003e=0.4.1,\u003c0.5`    | `\u003e=1.21,\u003c1.27`      |                         | `\u003e=1.3,\u003c2.2`         | `\u003e=0.18.3,\u003c0.20`     |                       | `\u003e=1.10,\u003c2.2`       | `\u003e=2023.1,\u003c2023.13`  | `\u003e=3.9,\u003c3.13`  |\n| `0.1.0`  | `\u003e=0.4.1,\u003c0.5`    | `\u003e=1.21,\u003c1.27`      |                         | `\u003e=1.3,\u003c2.2`         | `\u003e=0.18.3,\u003c0.20`     |                       | `\u003e=1.10,\u003c2.2`       | `\u003e=2023.1,\u003c2023.13`  | `\u003e=3.9,\u003c3.12`  |\n| `0.0.26` | `\u003e=0.4.1,\u003c0.5`    | `\u003e=1.21,\u003c1.27`      |                         | `\u003e=1.3,\u003c2.2`         | `\u003e=0.18.3,\u003c0.20`     |                       | `\u003e=1.10,\u003c2.2`       | `\u003e=2023.1,\u003c2023.13`  | `\u003e=3.9,\u003c3.12`  |\n| `0.0.25` | `\u003e=0.4.1,\u003c0.5`    | `\u003e=1.21,\u003c1.27`      |                         | `\u003e=1.3,\u003c2.2`         | `\u003e=0.18.3,\u003c0.20`     |                       | `\u003e=1.10,\u003c2.2`       | `\u003e=2023.4,\u003c2023.11`  | `\u003e=3.9,\u003c3.12`  |\n| `0.0.24` | `\u003e=0.3,\u003c0.5`      | `\u003e=1.21,\u003c1.27`      |                         | `\u003e=1.3,\u003c2.2`         | `\u003e=0.18.3,\u003c0.20`     |                       | `\u003e=1.10,\u003c2.2`       | `\u003e=2023.3,\u003c2023.9`   | `\u003e=3.9,\u003c3.12`  |\n| `0.0.23` | `\u003e=0.3,\u003c0.5`      | `\u003e=1.21,\u003c1.27`      |                         | `\u003e=1.3,\u003c2.2`         | `\u003e=0.18.3,\u003c0.20`     |                       | `\u003e=1.10,\u003c2.1`       | `\u003e=2023.3,\u003c2023.9`   | `\u003e=3.9,\u003c3.12`  |\n| `0.0.22` | `\u003e=0.3,\u003c0.5`      | `\u003e=1.20,\u003c1.26`      |                         | `\u003e=1.3,\u003c2.1`         | `\u003e=0.18.3,\u003c0.19`     |                       | `\u003e=1.10,\u003c2.1`       | `\u003e=2023.3,\u003c2023.9`   | `\u003e=3.9,\u003c3.12`  |\n| `0.0.21` | `\u003e=0.3,\u003c0.5`      | `\u003e=1.20,\u003c1.26`      |                         | `\u003e=1.3,\u003c2.1`         | `\u003e=0.18.3,\u003c0.19`     |                       | `\u003e=1.10,\u003c2.1`       | `\u003e=2023.3,\u003c2023.8`   | `\u003e=3.9,\u003c3.12`  |\n| `0.0.20` | `\u003e=0.3,\u003c0.5`      | `\u003e=1.20,\u003c1.26`      |                         | `\u003e=1.3,\u003c2.1`         | `\u003e=0.18.3,\u003c0.19`     |                       | `\u003e=1.10,\u003c2.1`       | `\u003e=2023.3,\u003c2023.8`   | `\u003e=3.9`        |\n\n\u003c/details\u003e\n\n## Contributing\n\nContributions are welcome! We appreciate bug fixes, feature additions, documentation improvements,\nand more. Please check the [contributing guidelines](CONTRIBUTING.md) for details on:\n\n- Setting up the development environment\n- Code style and testing requirements\n- Submitting pull requests\n\nWhether you're fixing a bug or proposing a new feature, please open an issue first to discuss\nyour changes.\n\n## API Stability\n\n:warning: **Important**: As `coola` is under active development, its API is not yet stable and may\nchange between releases. We recommend pinning a specific version in your project’s dependencies to\nensure consistent behavior.\n\n## License\n\n`coola` is licensed under BSD 3-Clause \"New\" or \"Revised\" license available in [LICENSE](LICENSE)\nfile.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdurandtibo%2Fcoola","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdurandtibo%2Fcoola","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdurandtibo%2Fcoola/lists"}