Metadata-Version: 2.1
Name: error-manager
Version: 1.4.4
Summary: Manage error codes, descriptions and data in a unified way throughout a project
Home-page: https://github.com/MaartendeRuyter/errors
Author: Maarten de Ruyter
Author-email: "Maarten de Ruyter" <maarten@geodatagarden.com>
License: GNU
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Description-Content-Type: text/x-rst
License-File: LICENSE

=============
Error Manager
=============


Managing error codes throughout you project
===========================================

**Error-manager** is a simple library for Python to manage all your projects error codes.

.. start-badges

.. list-table::
    :widths: 8 50
    :stub-columns: 1

    * - docs
      - |docs|
    * - tests
      - |codecov|
    * - package
      - |version| |commits-since|
  
.. |docs| image:: https://readthedocs.org/projects/errors/badge/?style=flat
    :target: https://errors.readthedocs.io/
    :alt: Documentation Status

.. |codecov| image:: https://codecov.io/gh/MaartendeRuyter/errors/branch/master/graphs/badge.svg?branch=master
    :alt: Coverage Status
    :target: https://codecov.io/github/MaartendeRuyter/errors

.. |version| image:: https://img.shields.io/pypi/v/error-manager.svg
    :alt: PyPI Package latest release
    :target: https://pypi.org/project/error-manager

.. |commits-since| image:: https://img.shields.io/github/commits-since/MaartendeRuyter/errors/v0.1.0.svg
    :alt: Commits since latest release
    :target: https://github.com/MaartendeRuyter/errors/compare/v0.1.0...master



.. end-badges


error-manager main use cases
----------------------------
Main use case for the error-manager package is to implement a ``ListErrors`` class that can be used throughout 
your project to define and access immutable standard error codes and descriptions ::

    # retrieve customer defined ErrorCode object form ``ListErrors`` class
    >>> from errors.error import ListErrors
    >>> ListErrors.API_GET_RETURNED_404
    ErrorCode(
        code='ER_API404_00001',
        description='API get request returned 404',
        error_data={})
    
    # add custom error data to error message when you want to persist or log the error
    # As the errorcode are immutable the add_error_data returns a new error (immutable) error code. 
    >>> from errors.base import add_error_data
    >>> error_without_data = ListErrors.API_GET_RETURNED_404
    >>> error_with_data = add_error_data(error_without_data, {'url': 'www.bad_url.com'})
    >>> error_with_data 
    ErrorCode(
        code='ER_API404_00001',
        description='API get request returned 404',
        error_data={'url': 'www.bad_url.com'})
    
This ErrorCode could be returned by the method performing the request so that
the logic calling this method is aware of the failing request.

In order to use a single type as return value the error-manager package introduces a `ReturnValue` class
that can hold the actual response, any possible downstream errors and the status of the return value. See 
ReturnValue documentation.


Documentation
=============

https://errors.readthedocs.io/


Changelog
=========

1.4.4 (2024-05-23)
------------------
* Added typevar for ReturnValueWithStatus result attribute

1.4.0 (2024-05-23)
------------------
* Added ``ErrorListByMixin`` class to support autocompletion and type checking of your custom project errors

1.3.2 (2023-10-23)
------------------
* Added support for python 3.12

1.3.1 (2023-10-20)
------------------
* Refactored setup.cfg and pyproject.toml

1.3.0 (2022-11-01)
------------------
* Added type annotations 

1.2.4 (2022-10-26)
------------------
* Added support for python 3.11

1.2.2 (2022-05-09)
------------------
* Added ``ReturnValueWithErrorStatus`` to __init__ for easy import.

1.2.1 (2022-05-08)
------------------
* Added a class ``ReturnValueWithErrorStatus`` to easily create
  ``ReturnValueWithStatus`` with a error attached to it.

1.2.0 (2022-05-06)
------------------
* Added a dataclass ``ReturnValueWithStatus`` to allow consuming classes and
  methods to return a single return type with result, status and errors
  collected in one Object

1.1.1 (2021-11-06)
------------------
* Import ``ListErrors``, ``ErrorCode``, ``add_error_data()`` and ``is_error()``
  in ``errors`` ``__init__.py`` so that they can be directly imported from ``errors`` module

1.1.0 (2021-11-05)
------------------
* Added is_error method to check if an object is an instance of
  (sub)class ``ErrorCode``

1.0.0 (2021-10-12)
------------------
* Added Documentation and removed more default but redundant Documentation
* Added reference documentation for ``ListErrors`` and ``base`` module   

0.9.0 (2021-10-11)
------------------
* added error codes as attribut to ListErrors class.
  After registration of an ErrorCode the errorcode is accessible in
  ``ListErrors`` via::

      ListErrors.ERROR_CODE_KEY

* Added Documentation and removed default redundant Documentation

0.1.0 (2021-10-08)
------------------
* First release on PyPI.
