Metadata-Version: 2.1
Name: muffin-sentry
Version: 1.4.1
Summary: Sentry Integration for Muffin framework
Home-page: https://github.com/klen/muffin-sentry
Author: Kirill Klenov
Author-email: horneds@gmail.com
License: MIT
Project-URL: Documentation, https://github.com/klen/muffin-sentry
Project-URL: Source code, https://github.com/klen/muffin-sentry
Project-URL: Issue tracker, https://github.com/klen/muffin-sentry/issues
Keywords: sentry,asyncio,trio,asgi,muffin
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Framework :: AsyncIO
Classifier: Framework :: Trio
Requires-Python: >=3.7
Provides-Extra: tests
License-File: LICENSE

Muffin-Sentry
#############

.. _description:

**Muffin-Sentry** -- Sentry_ Integration for Muffin_ framework

.. _badges:

.. image:: https://github.com/klen/muffin-sentry/workflows/tests/badge.svg
    :target: https://github.com/klen/muffin-sentry/actions
    :alt: Tests Status

.. image:: https://img.shields.io/pypi/v/muffin-sentry
    :target: https://pypi.org/project/muffin-sentry/
    :alt: PYPI Version

.. image:: https://img.shields.io/pypi/pyversions/muffin-sentry
    :target: https://pypi.org/project/muffin-sentry/
    :alt: Python Versions

.. _contents:

.. contents::

.. _requirements:

Requirements
=============

- python >= 3.8

.. _installation:

Installation
=============

**Muffin-Sentry** should be installed using pip: ::

    pip install muffin-sentry

.. _usage:

Usage
=====

.. code-block:: python

    from muffin import Application
    import muffin_sentry

    # Create Muffin Application
    app = Application('example')

    # Initialize the plugin
    # As alternative: jinja2 = Jinja2(app, **options)
    sentry = muffin_sentry.Plugin()
    sentry.setup(app, dsn="DSN_URL")

    # Setup custom request processors (coroutines are not supported)
    @sentry.processor
    def user_scope(event, hint, request):
        if request.user:
            event['user'] = request.user.email
        return event

    # Use it inside your handlers

    # The exception will be send to Sentry
    @app.route('/unhandled')
    async def catch_exception(request):
        raise Exception('unhandled')

    # Capture a message by manual
    @app.route('/capture_message')
    async def message(request):
        sentry.capture_message('a message from app')
        return 'OK'

    # Capture an exception by manual
    @app.route('/capture_exception')
    async def exception(request):
        sentry.capture_exception(Exception())
        return 'OK'

    # Update Sentry Scope
    @app.route('/update_user')
    async def user(request):
        scope = sentry.current_scope.get()
        scope.set_user({'id': 1, 'email': 'example@example.com'})
        sentry.capture_exception(Exception())
        return 'OK'


Options
-------

=========================== ======================================= =========================== 
Name                        Default value                           Desctiption
--------------------------- --------------------------------------- ---------------------------
**dsn**                     ``""``                                  Sentry DSN for your application
**sdk_options**             ``{}``                                  Additional options for Sentry SDK Client. See https://docs.sentry.io/platforms/python/configuration/options/
**ignore_errors**           ``[ResponseError, ResponseRedirect]``   Exception Types to Ignore
=========================== ======================================= =========================== 

You are able to provide the options when you are initiliazing the plugin:

.. code-block:: python

    sentry.setup(app, dsn='DSN_URL')


Or setup it inside ``Muffin.Application`` config using the ``SENTRY_`` prefix:

.. code-block:: python

   SENTRY_DSN = 'DSN_URL'

``Muffin.Application`` configuration options are case insensitive

.. _bugtracker:

Bug tracker
===========

If you have any suggestions, bug reports or
annoyances please report them to the issue tracker
at https://github.com/klen/muffin-sentry/issues

.. _contributing:

Contributing
============

Development of Muffin-Sentry happens at: https://github.com/klen/muffin-sentry


Contributors
=============

* klen_ (Kirill Klenov)

.. _license:

License
========

Licensed under a `MIT license`_.

.. _links:


.. _klen: https://github.com/klen
.. _Muffin: https://github.com/klen/muffin
.. _Sentry: https://sentry.io/

.. _MIT license: http://opensource.org/licenses/MIT


