semvec/pypi-packages huggingface dataset:
mireq-django-ajax-utils 0.0.8
Django ajax utils
Requires Python: >=3.6
Keywords: django, ajax

=================
Django ajax utils
=================

|version| |downloads| |license|

This is small set of ajax utility functions. It's used mostly in my internal
projects.

Install
-------

.. code:: bash

	pip install mireq-django-ajax-utils

.. |version| image:: https://badge.fury.io/py/mireq-django-ajax-utils.svg
	:target: https://pypi.python.org/pypi/mireq-django-ajax-utils/

.. |downloads| image:: https://img.shields.io/pypi/dw/mireq-django-ajax-utils.svg
	:target: https://pypi.python.org/pypi/mireq-django-ajax-utils/

.. |license| image:: https://img.shields.io/pypi/l/mireq-django-ajax-utils.svg
	:target: https://pypi.python.org/pypi/mireq-django-ajax-utils/
classic-error-handling 0.2.3
Provides primitives for application errors
Requires Python: >=3.10

# Classic Error Handling

Пакет предоставляет примитивы для обработки ошибок на уровне приложения.

## Установка

```bash
pip install classic-error-handling
```

## Использование

Примеры оформления ошибок:

```python
from classic.error_handling import Error, ErrorsList


# Ошибка с пространством имен
class Namespaced(Error):
    namespace = 'some_namespace'


# Наследование пространства имен
class InheritingNamespace(Namespaced):
    pass


# Ошибка с пространством имен и явным кодом
class NamespacedWithCode(Error):
    namespace = 'some_namespace'
    code = 'some_error'


# Ошибка с явным кодом без пространства имен
class WithCode(Error):
    code = 'some_error'


# Ошибка с литеральным сообщением
class WithLiteralMessage(Error):
    message_template = 'some_message'


# Ошибка с шаблоном сообщения
class WithMessageTemplate(Error):
    message_template = 'some_template: {arg}'
```

Пример использования:

```python
from classic.error_handling import Error, ErrorsList


# Определяем ошибки приложения
class IncorrectState(Error):
    namespace = 'app'
    message_template = 'Некорректное состояние приложения - "{text}"'


class ServiceNotReady(Error):
    namespace = 'app'
    message_template = 'Сервис еще не готов'


# В сервисах:
class SomeService:
    
    def __init__(self):
        self.ready_to_serve = False

    def is_ready(self):
        """Демонстрирует простое использование"""
        if not self.ready_to_serve:
            raise ServiceNotReady()

    def mark_as_ready(self):
        """Демонстрирует использование шаблонов сообщений"""
        if self.ready_to_serve:
            raise IncorrectState(text='Сервис уже готов')
        self.ready_to_serve = True

    def just_give_errors(self):
        """Демонстрирует метод, который может вернуть несколько ошибок"""
        errors = [IncorrectState(text='ошибка 1'), 
                  IncorrectState(text='ошибка 2')]
        raise ErrorsList(*errors)


# Где-то в адаптерах:

service = SomeService()

try:
    service.is_ready()
except Error as error:
    print(f'Приложение ответило с кодом ошибки "{error.code_representation}", '
          f'сообщение: "{error.message}"')

try:
    service.mark_as_ready()
    service.mark_as_ready()
except Error as error:
    print(f'Приложение ответило с кодом ошибки "{error.code_representation}", '
          f'сообщение: "{error.message}"')
    
try:
    service.just_give_errors()
except ErrorsList as errors_list:
    for error in errors_list.errors:
        print(f'Приложение ответило с кодом ошибки "{error.code_representation}", '
              f'сообщение: "{error.message}"')