Skip to content
View pavelmaksimov's full-sized avatar

Block or report pavelmaksimov

Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
pavelmaksimov/README.md

Привет! 👋

Я Backend Engeener / Python Developer, на этой странице ты можешь ознакомиться с моими проектами.

Я увлечен проектированием ПО, изучаю паттерны и принципы, позволяющие управлять сложностью и сохранять качество кода.

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

🚀 Мои проекты

🛠️ Статические анализаторы

Я создал несколько статических анализаторов для управления сложностью и контроля архитектурных ограничений в Python-проектах.

🍰 layers-linter - Проверяет соблюдение слоистой архитектуры. https://github.com/pavelmaksimov/layers-linter

Предназначен для проверки соблюдения архитектурных ограничений, связанных с:

  1. разделением модулей по их техническим ролям и контроль направления зависимостей между ними; Анализирует импорты между модулями и предупреждает, когда направление зависимости между слоями не соответствуют заданнам направлениям;
  2. ограничением на использование библиотек в определенных слоях; Анализирует импорты библиотек и предупреждает, если библиотека импортирована в ограниченном для неё, слое;

Для настройки используется TOML-файл, где описываются слои и направление зависимостей. Особенно полезен для командной работы над сложными проектами. Поддерживает работу как отдельный инструмент и как плагин для flake8.

💉 di-linter - Обнаруживает инъекции зависимостей (Dependency Injection). https://github.com/pavelmaksimov/di-linter

Реализует проверку соблюдения принципа инверсии зависимостей. Инструмент определяет случаи, когда зависимости создаются или используются напрямую в функциях, а не передаются извне. Подходит проектам, где нужно внедрять зависимости через DI-контейнер или поддерживать принципы чистой архитектуры, делая код более тестируемым и поддерживаемым. Линтер поддерживает настройку через TOML-файл. Поддерживает работу как отдельный инструмент и как плагин для flake8.

🏷️ domain-types-linter - Проверяет ограничение на использование приминитивных типов в аннотациях. https://github.com/pavelmaksimov/domain-types-linter

Следит за тем, чтобы в аннотациях использовались только доменно-специфичные типы, а не универсальные (str, int и т.д.). Анализирует аннотации типов и выявляет нарушения: использование универсальных типов, их алиасов или generic-типов без доменных параметров. Поддерживает работу как отдельный инструмент и как плагин для flake8.

🧱 bounded-contexts-linter - Проверяет изоляцию "ограниченных контекстов" Domain-Driven Design. https://github.com/pavelmaksimov/bounded-contexts-linter

Проверяет, что зависимости между модулями возникают только внутри одного bounded context, предотвращая несанкционированные импорты между доменами. Позволяет явно определять shared kernel и shared scope для общих модулей. Линтер поддерживает настройку через TOML-файл. Поддерживает работу как отдельный инструмент и как плагин для flake8.

⚙️ Инструменты для разработки

🏛️ project-architecture-template - Шаблон слоистой архитектуры для Python проектов. https://github.com/pavelmaksimov/project-architecture-template

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

  • Документированную слоистую архитектуру
  • Настроенные линтеры
  • Настроенные фабрики и фикстуры для тестов
  • CI/CD конфигурации для GitLab
  • Подключение к бд Postgres
  • Alembic для миграций бд
  • и др.
🏗️ sqlalchemy-fastapi-endpoint-factory - Генератор CRUD эндпоинтов для FastAPI https://github.com/pavelmaksimov/sqlalchemy-fastapi-endpoint-factory

Инструмент для автоматической генерации CRUD-эндпоинтов FastAPI на основе моделей SQLAlchemy. Позволяет быстро создавать REST API для работы с данными без ручного описания маршрутов. Пример использования — одна строка для генерации эндпоинта по любой модели Pydantic. Подходит для прототипирования и ускорения разработки сервисов на FastAPI и SQLAlchemy.

📡 API Clients

🛍️ tapi-yandex-market - Python клиент для API Яндекс.Маркета.

📢 tapi-yandex-direct - Python клиент для API Яндекс.Директ.

📈 tapi-yandex-metrika - Python Клиент всех для API Яндекс.Метрика.

Other

🌊 FlowMaster - Фреймворк для построения ETL/ELT пайплайнов по YAML-конфигурации.

🧠 algorithms - Записывал решения и ошибки при решении алгоритмических задач

📊 attributions - Инструмент для атрибуции в маркетинговой аналитике.


📬 Контакты

Telegram: @pavel_maksimow

Pinned Loading

  1. tapi-yandex-metrika tapi-yandex-metrika Public

    Библиотека для всех API Яндекс Метрика

    Python 169 20

  2. FlowMaster FlowMaster Public

    ETL flow framework based on Yaml configs in Python

    Python 22 3

  3. tapi-yandex-direct tapi-yandex-direct Public

    Python библиотека API Яндекс Директ

    Python 61 11

  4. tapi-yandex-market tapi-yandex-market Public

    Python библиотека для API Яндекс Маркет

    Python 13 1

  5. galytics3 galytics3 Public

    Обертка над стандартной библиотекой google_api_python_client для легкой работы с API Google Analytics v3

    Python 17 5

  6. clickhousepy clickhousepy Public

    Python обертка для запросов в БД Clickhouse

    Python 9