Skip to main content

function-tools - это библиотека вспомогательных классов для реализации Функций системы.

Договоримся

Необходимо различать функции - объект Python и бизнес-функцию. В тех местах, где речь будет вестить про Python-функции - они будут написаны с маленькой буквы - функции, про бизнес-функции с большой буквы - Функции. Если абстрагироваться, то система - хранилище данных и функционал, который каким-то образом изменяет данные, при этом достигая ожидаего результата описанного в бизнес требованиях. Таким образом, Функции - это ядро системы и необходимо уделять пристальное внимание тому, как Функции реализованы в системе.

В большинстве случаев Функции имеют следующие признаки:

  • Реализованы в виде функций длинной не влазящик ни в один экран монитора;
  • Имеют запутанный код с множеством условных конструкций (умеренное количество допустимо);
  • Взаимодействие с базой данных выстроено таким образом, как будто вся база данных хранится в оперативной памяти и нет необходимости заботиться о количестве запросов и их оптимальности;
  • Наименование функций и названий переменных сокращено настолько, что для понимания кода иногда не хватает простого прочтения и возникает необходимость дебага. Часто это дополнятся размером функций, когда в середине не помнишь, что было в начале.
  • Высокая когнитивная нагрузка связанная со сложностью реализации и правилами, для которых нет описания, но они имеют фундаментальное значение в работе Функций.
  • Низкий уровень самодокументируемости кода из-за плохой его декомпозиции;
  • Перегруженность функций действиями, которые являются вспомогательными и никак не отражают реализованные бизнес требования.
  • Отсутствие валидации входных данных и данных при выполнении функции, что позволяет потенциально испортить данные;
  • Кеширование данных для работы функции часто замешано код функции;
  • Большая вариативность реализаций Функций, что не позволят однозначно найти причину ошибки при ее возникновении в виде Инцидента или Бага (если конечно не сам сегодня эту ошибку совершил).

Для решения указанных проблем была разработана библиотека с проработанной архитектурой, которая находится в разработке, но уже решающая массу проблем.

Упрощенная диаграмма классов представлена на Рисунке 1.

Рисунок 1

Основные компоненты:

Cache

Кеш объектов некоторой указанной сущности. Служит для однократной выборки данных и дальнейшего их использования в рамках функции (Function).

StorageCache

Хранилище кешей. Состоит из кешей и используется для более удобного хранения и доступа к ним.

Helper

Помощник запускаемого объекта. Содержит вспомогательные функции, кеш.

Validator

Валидатор данных. Имеется у Пускателя и Функции.

Function

Функция, приближенная к бизнес-функции. Имеет помощника и выполняет действия согласно безнес требований.

Runner

Пускатель. Умеет запускать как одинчные функции, так и цепочные функции представленные в виде пускателей.

RunnerManager

Менеджер пускателя. Отвечает за создание функций и пускателей и дальнейший их запуск.

Error

Ошибка, возникающая в процессе работы.

Result

Результат исполнения запускаемого объекта.

ResultPresenter

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

Алгоритм работы Функции выглядит следующим образом:

  • Создается пускатель;
  • Создаются функции и пускатели, которые добавляются в очередь на исполнение пускателю;
  • Функции и пускатели создают помощников, которые в свою очередь создают хранилища кешей;
  • Перед запуском выполняемых объектов производится валидация на уровне пускателя;
  • Производится запуск функций;
  • После завершения работы выполняемых объектов и, соответственно, пускателя, производится вывод результата работы пользователю в необходимом виде.

Подробная актуальная диаграммка классов представлена на Рисунке 2.

Рисунок 2

С подробной документацией можно ознакомиться на function-tools.readthedocs.io

Release files for function-tools 2026.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for function-tools 2026.0.0
File Size Uploaded
function_tools-2026.0.0.tar.gz 41.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for function-tools 2026.0.0
File Interpreter ABI Platform
function_tools-2026.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 102.9 kB

Release files / function_tools-2026.0.0.tar.gz

Download URL function_tools-2026.0.0.tar.gz
Size 41.4 kB
Tags Source
SHA-256 checksum
How to use checksums
8f8aa01a77d36a4581c6e4587eef5c381f4cda4cfbd6bd52743ac2b16bdace63
BLAKE2b-256 checksum
How to use checksums
891db4772fafc9122e616365bba78e784732537411eed7c5b95c6ae988a72edd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.23

Release files / function_tools-2026.0.0-py3-none-any.whl

Download URL function_tools-2026.0.0-py3-none-any.whl
Size 61.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e0fe03bf0af83bd4e2bec4cd0e707a3ce2b3a8d608c2ce3f675d6df868c54272
BLAKE2b-256 checksum
How to use checksums
4da1cb957c57c5f9bf832211e7e0cbd75d286d9489748c7131cdcd3b3c926981
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.23

Release history Release notifications | RSS feed

This release

2026.0.0 This release

2 release files

0.13.0

2 release files

0.11.0

2 release files

0.10.7

2 release files

0.10.6

2 release files

0.10.3

2 release files

0.10.2

2 release files

0.10.1

2 release files

0.9.0

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.19

2 release files

0.1.17

2 release files

0.1.7

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

3 release files

0.1.1

2 release files

0.1.0

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page