#python python... PYTHON 🔛 🚀
11 subscribers
914 photos
7 videos
158 files
1.54K links
Download Telegram
Forwarded from Python Daily
Dispatchery: Type-aware, multi-arg function dispatch for complex and nested Python types

Links: [Github](https://github.com/bolaft/dispatchery/), [PyPI](https://pypi.org/project/dispatchery/)

**What it does:**

*dispatchery* is a lightweight Python package for function dispatching inspired by the standard *singledispatch* decorator, but with support for complex, nested, parameterized types, like for example *tuple[str, dict[str, int | float]]*.

**Comparison**:

Unlike *singledispatch*, *dispatchery* can dispatch based on:

- Generic parameterized types (e.g. *list[int]*)
- Nested types (e.g. *tuple[str, dict[str, int | float]]*)
- Union types (e.g. *int | str* or *Union[int, str]*)
- Multiple arg and kwarg values, not just the first one

**Target Audience:**

Python developers who don't like having a bunch of *if isinstance* checks everywhere in their code.

**Example :**

from dispatchery import dispatchery

@dispatchery
def my_func(value):
return "Standard stuff."

@my_func.register(list[str])
def _(value):
return "Strings!"

@my_func.register(list[int] | list[float])
def _(value):
return "Numbers!"

@my_func.register(str, int | float, option=str)
def _(value1, value2, option):
return "Two values and a kwarg!"



/r/Python
https://redd.it/1grszm2
Forwarded from Data Whisperer
Lineage для кода: Визуализация зависимостей в Python-проектах

В мире данных мы привыкли к инструментам вроде dbt и datahub, которые отлично справляются с построением графов зависимостей для таблиц в базах данных. Но что делать, когда нужно разобраться в структуре кодовой базы?

Проблема

Недавно я столкнулся с задачей анализа старого проекта, где:

- Множество взаимосвязанных модулей
- Отсутствие тестов
- Сложная логика взаимодействия компонентов

Решение: pydeps 🛠

В поисках инструмента для визуализации зависимостей я обнаружил pydeps - Python-модуль, который:

- Анализирует структуру проекта
- Строит наглядный граф зависимостей
- Экспортирует результат в SVG-формат

Преимущества использования

- Быстрое понимание архитектуры проекта
- Визуальное отслеживание зависимостей
- Помощь в рефакторинге и написании тестов

💡 Этот инструмент особенно полезен при работе с legacy-кодом или при погружении в новый проект.


pip install pydeps
pydeps your_project_path
Декоратор override

@override используется для переопределения методов в классах-наследниках. Он позволяет указать, что метод в подклассе переопределяет метод базового класса.

Это может быть полезно для:

— Повышения читабельности кода, так как сразу видно, какие методы переопределены.

— Выявления ошибок: если имя метода в дочернем классе не совпадает с именем в родительском, будет выдана ошибка.

— Проверки типов аргументов: декоратор гарантирует, что типы аргументов совпадают с базовым методом.

#python #decorators
Summarize300Bot, [Dec 5, 2024 at 12:13]
Link

Обработка новых исправимых ошибок
• Код должен исправить ошибку и продолжить работу.Link
• Пример: установка значения year равным unknown для записи в базу данных.Link

Обработка всплывающих исправляемых ошибок
• Код, вызвавший функцию, должен устранить ошибку и продолжить работу.Link
• Пример: использование EAFP для обнаружения и устранения ошибки.Link

Обработка ошибок в Python
• Функция может возвращать исполнителя из базы данных, но иногда это приводит к сбою.Link
• Используется EAFP для перехвата ошибки NotFound и добавления неизвестного исполнителя в базу данных.Link
• Код знает, как настроить состояние приложения для продолжения работы.Link

Обработка новых неисправимых ошибок
• Если ошибка не может быть исправлена, создается исключение для уведомления вызывающей стороны.Link
• Исключение может стать исправимым, достигнув высокой позиции в стеке вызовов.Link
• Пример: отсутствие названия песни является неисправимой ошибкой.Link

Обработка всплывающих неисправимых ошибок