Metadata-Version: 2.5
Name: bermuda-ledger
Version: 2.4.1
Summary: A module for manipulating insurance loss triangles
Project-URL: Homepage, https://ledger-investing-bermuda-ledger.readthedocs-hosted.com/en/latest/
Project-URL: Documentation, https://ledger-investing-bermuda-ledger.readthedocs-hosted.com/en/latest/
Project-URL: Repository, https://github.com/LedgerInvesting/bermuda-ledger
Author: Korra
License-File: LICENSE.txt
Requires-Python: >=3.14
Requires-Dist: altair==6.1.0
Requires-Dist: awswrangler
Requires-Dist: babel
Requires-Dist: frozendict
Requires-Dist: numpy
Requires-Dist: pandas>1.4.1
Requires-Dist: scipy
Requires-Dist: toolz
Provides-Extra: dev
Requires-Dist: beautifulsoup4==4.15.0; extra == 'dev'
Requires-Dist: boto3==1.43.116; extra == 'dev'
Requires-Dist: botocore==1.43.116; extra == 'dev'
Requires-Dist: build==1.6.1; extra == 'dev'
Requires-Dist: cachebox==5.2.3; extra == 'dev'
Requires-Dist: certifi==2026.10.19; extra == 'dev'
Requires-Dist: cffi==2.1.1; extra == 'dev'
Requires-Dist: cfgv==3.5.0; extra == 'dev'
Requires-Dist: chainladder==0.9.2; extra == 'dev'
Requires-Dist: charset-normalizer==3.5.2; extra == 'dev'
Requires-Dist: click==8.5.0; extra == 'dev'
Requires-Dist: cloudpickle==3.1.2; extra == 'dev'
Requires-Dist: contourpy==1.3.3; extra == 'dev'
Requires-Dist: cryptography==50.0.2; extra == 'dev'
Requires-Dist: cycler==0.12.1; extra == 'dev'
Requires-Dist: deepdiff==9.1.0; extra == 'dev'
Requires-Dist: defusedxml==0.7.1; extra == 'dev'
Requires-Dist: dill==0.4.1; extra == 'dev'
Requires-Dist: distlib==0.4.4; extra == 'dev'
Requires-Dist: filelock==4.2.4; extra == 'dev'
Requires-Dist: fonttools==4.67.0; extra == 'dev'
Requires-Dist: identify==2.6.20; extra == 'dev'
Requires-Dist: idna==3.20; extra == 'dev'
Requires-Dist: iniconfig==2.3.1; extra == 'dev'
Requires-Dist: isort==9.0.2; extra == 'dev'
Requires-Dist: jmespath==1.1.0; extra == 'dev'
Requires-Dist: joblib==1.6.0; extra == 'dev'
Requires-Dist: kiwisolver==1.5.1; extra == 'dev'
Requires-Dist: llvmlite==0.50.0; extra == 'dev'
Requires-Dist: markupsafe==3.0.4; extra == 'dev'
Requires-Dist: matplotlib==3.11.2; extra == 'dev'
Requires-Dist: moto==5.2.4; extra == 'dev'
Requires-Dist: mypy-extensions==1.1.0; extra == 'dev'
Requires-Dist: narwhals==2.27.1; extra == 'dev'
Requires-Dist: nodeenv==1.11.0; extra == 'dev'
Requires-Dist: numba==0.68.0; extra == 'dev'
Requires-Dist: numpy==1.26.4; extra == 'dev'
Requires-Dist: orderly-set==5.5.0; extra == 'dev'
Requires-Dist: packaging==26.3; extra == 'dev'
Requires-Dist: pandas==2.3.3; extra == 'dev'
Requires-Dist: patsy==1.0.3; extra == 'dev'
Requires-Dist: pillow==13.0.0; extra == 'dev'
Requires-Dist: pip-tools==7.6.2; extra == 'dev'
Requires-Dist: pip==26.2.2; extra == 'dev'
Requires-Dist: platformdirs==4.13.5; extra == 'dev'
Requires-Dist: pluggy==1.7.0; extra == 'dev'
Requires-Dist: pre-commit==4.7.0; extra == 'dev'
Requires-Dist: pycparser==3.11; extra == 'dev'
Requires-Dist: pygments==2.21.0; extra == 'dev'
Requires-Dist: pyparsing==3.3.3; extra == 'dev'
Requires-Dist: pyproject-hooks==1.3.3; extra == 'dev'
Requires-Dist: pytest==9.1.1; extra == 'dev'
Requires-Dist: python-dateutil==2.9.0.post0; extra == 'dev'
Requires-Dist: python-discovery==1.6.4; extra == 'dev'
Requires-Dist: pytz==2026.5; extra == 'dev'
Requires-Dist: pyyaml==6.0.3; extra == 'dev'
Requires-Dist: requests==2.34.2; extra == 'dev'
Requires-Dist: responses==0.26.3; extra == 'dev'
Requires-Dist: ruff==0.17.1; extra == 'dev'
Requires-Dist: s3transfer==0.19.3; extra == 'dev'
Requires-Dist: scikit-learn==1.9.1; extra == 'dev'
Requires-Dist: scipy==1.17.1; extra == 'dev'
Requires-Dist: setuptools==84.2.1; extra == 'dev'
Requires-Dist: six==1.17.0; extra == 'dev'
Requires-Dist: soupsieve==3.0.3; extra == 'dev'
Requires-Dist: sparse==0.19.2; extra == 'dev'
Requires-Dist: threadpoolctl==3.7.0; extra == 'dev'
Requires-Dist: typing-extensions==4.16.0; extra == 'dev'
Requires-Dist: tzdata==2026.5; extra == 'dev'
Requires-Dist: urllib3==2.8.0; extra == 'dev'
Requires-Dist: virtualenv==21.14.12; extra == 'dev'
Requires-Dist: werkzeug==3.1.9; extra == 'dev'
Requires-Dist: wheel==0.48.0; extra == 'dev'
Requires-Dist: xmltodict==1.0.4; extra == 'dev'
Provides-Extra: docs
Requires-Dist: alabaster==1.0.0; extra == 'docs'
Requires-Dist: altair==6.1.0; extra == 'docs'
Requires-Dist: attrs==26.1.0; extra == 'docs'
Requires-Dist: babel==2.18.0; extra == 'docs'
Requires-Dist: beautifulsoup4==4.15.0; extra == 'docs'
Requires-Dist: bleach==6.4.0; extra == 'docs'
Requires-Dist: certifi==2026.10.19; extra == 'docs'
Requires-Dist: charset-normalizer==3.5.2; extra == 'docs'
Requires-Dist: commonmark==0.9.2; extra == 'docs'
Requires-Dist: defusedxml==0.7.1; extra == 'docs'
Requires-Dist: docutils==0.23; extra == 'docs'
Requires-Dist: fastjsonschema==2.22.2; extra == 'docs'
Requires-Dist: idna==3.20; extra == 'docs'
Requires-Dist: imagesize==2.0.1; extra == 'docs'
Requires-Dist: jinja2==3.1.6; extra == 'docs'
Requires-Dist: jsonschema-specifications==2025.9.1; extra == 'docs'
Requires-Dist: jsonschema==4.26.0; extra == 'docs'
Requires-Dist: jupyter-client==8.10.0; extra == 'docs'
Requires-Dist: jupyter-core==5.9.1; extra == 'docs'
Requires-Dist: jupyterlab-pygments==0.3.0; extra == 'docs'
Requires-Dist: markdown==3.11.2; extra == 'docs'
Requires-Dist: markupsafe==3.0.4; extra == 'docs'
Requires-Dist: mistune==3.4.0; extra == 'docs'
Requires-Dist: narwhals==2.27.1; extra == 'docs'
Requires-Dist: nbclient==0.11.0; extra == 'docs'
Requires-Dist: nbconvert==7.17.2; extra == 'docs'
Requires-Dist: nbformat==5.11.1; extra == 'docs'
Requires-Dist: nbsphinx==0.9.8; extra == 'docs'
Requires-Dist: packaging==26.3; extra == 'docs'
Requires-Dist: pandocfilters==1.5.1; extra == 'docs'
Requires-Dist: platformdirs==4.13.5; extra == 'docs'
Requires-Dist: pockets==0.9.1; extra == 'docs'
Requires-Dist: pygments==2.21.0; extra == 'docs'
Requires-Dist: python-dateutil==2.9.0.post0; extra == 'docs'
Requires-Dist: pyzmq==27.2.0; extra == 'docs'
Requires-Dist: recommonmark==0.7.1; extra == 'docs'
Requires-Dist: referencing==0.37.0; extra == 'docs'
Requires-Dist: requests==2.34.2; extra == 'docs'
Requires-Dist: roman-numerals==4.1.0; extra == 'docs'
Requires-Dist: rpds-py==2026.9.1; extra == 'docs'
Requires-Dist: six==1.17.0; extra == 'docs'
Requires-Dist: snowballstemmer==3.1.1; extra == 'docs'
Requires-Dist: soupsieve==3.0.3; extra == 'docs'
Requires-Dist: sphinx-copybutton==0.5.2; extra == 'docs'
Requires-Dist: sphinx-markdown-tables==0.0.17; extra == 'docs'
Requires-Dist: sphinx-wagtail-theme==6.6.0; extra == 'docs'
Requires-Dist: sphinx==9.2.0; extra == 'docs'
Requires-Dist: sphinxcontrib-applehelp==2.0.0; extra == 'docs'
Requires-Dist: sphinxcontrib-devhelp==2.0.0; extra == 'docs'
Requires-Dist: sphinxcontrib-htmlhelp==2.1.0; extra == 'docs'
Requires-Dist: sphinxcontrib-jsmath==2.0.0; extra == 'docs'
Requires-Dist: sphinxcontrib-napoleon==0.7; extra == 'docs'
Requires-Dist: sphinxcontrib-qthelp==2.0.0; extra == 'docs'
Requires-Dist: sphinxcontrib-serializinghtml==2.0.0; extra == 'docs'
Requires-Dist: sphinxext-altair==0.2.0; extra == 'docs'
Requires-Dist: tinycss2==1.5.1; extra == 'docs'
Requires-Dist: tornado==6.5.10; extra == 'docs'
Requires-Dist: traitlets==5.16.1; extra == 'docs'
Requires-Dist: typing-extensions==4.16.0; extra == 'docs'
Requires-Dist: urllib3==2.8.0; extra == 'docs'
Requires-Dist: webencodings==0.6.1; extra == 'docs'
Description-Content-Type: text/x-rst

|build-status| |ruff| |docs|

Bermuda 
-----------------------

Bermuda is a Python package for the representation, manipulation,
and exploration of insurance loss triangles, created
by `Korra <https://korra.com>`_.
It offers a user-friendly interface for:

* Loading and saving insurance loss triangles using a number of formats (e.g. JSON, CSV, Pandas :code:`DataFrame` objects, binary files).
* A single :code:`Triangle` class for manipulating triangles of varying complexities (e.g. ragged, multi-program, cumulative or incremental triangles).
* An intuitive :code:`Cell` type that can hold multiple data types and metadata.
* A collection of useful :code:`Cell`- and :code:`Triangle`-level functionality, including summarizing, aggregating, extending, filtering, and bootstrapping insurance loss triangles.

Check out the `full documentation <https://ledger-investing-bermuda-ledger.readthedocs-hosted.com/en/latest/?badge=latest>`_.

If you're new to Bermuda, take a look at the 
`Quick Start <https://ledger-investing-bermuda-ledger.readthedocs-hosted.com/en/latest/quick-start.html>`_
guide
for a brief overview of its functionality, or the
`User Guide <https://ledger-investing-bermuda-ledger.readthedocs-hosted.com/en/latest/user-guide/index.html>`_ 
for a more complete explanation
of Bermuda's design decisions, insurance triangles, and Bermuda's overall architecture.
The 
`Tutorials <https://ledger-investing-bermuda-ledger.readthedocs-hosted.com/en/latest/tutorials/index.html>`_ 
section includes common usage
patterns.

If you're interested in contributing to Bermuda,
take a look at our
`Developer Guide <https://ledger-investing-bermuda-ledger.readthedocs-hosted.com/en/latest/developer-guide/index.html>`_.

Installation
-------------

Core:

..  code-block:: bash

    python3.14 -m pip install bermuda-ledger

Developing:

..  code-block:: bash

    python3.14 -m pip install 'bermuda-ledger[dev]'

Docs:

..  code-block:: bash

    python3.14 -m pip install 'bermuda-ledger[docs]'

.. |build-status| image:: https://github.com/LedgerInvesting/bermuda-ledger/actions/workflows/test.yml/badge.svg
    :target: https://github.com/LedgerInvesting/bermuda-ledger/blob/main/.github/workflows/test.yml

.. |ruff| image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json
    :target: https://github.com/astral-sh/ruff

.. |docs| image:: https://readthedocs.com/projects/ledger-investing-bermuda-ledger/badge/?version=latest
    :target: https://ledger-investing-bermuda-ledger.readthedocs-hosted.com/en/latest/?badge=latest
