Skip to main content

Flake8 plugin enforcing N notation

Project description

Линтер N-нотации

Теперь следовать принципам легко!

Русский | English

Это flake8-плагин, который проверяет соответствие кода правилам N-нотации. Используйте его в проектах, где вы действительно пишете в этом кодстайле (или хотите быстро прогнать отдельные файлы/каталоги).

Принципы N-нотации (кратко)

Данный плагин проверяет следующие правила философии N-нотации:

  • Имена не несут смысла. Смысл берётся из структуры и контекста, а не из словесных идентификаторов.
  • Регистр важен: N... — структуры/типы, n... — данные/исполняемое.
  • Файлы: n<цифры>.py (см. NNO401).
  • Директории: N<цифры>[_<цифры>]... (см. NNO420).
  • Переменные / функции: n<10 цифр> (для булевых — n<10 бит>).
  • Классы: N<10 цифр>, наследники — цепочка N<id>n<id>... (см. NNO107).
  • Члены класса: n_<...> / _n<...>; получатель метода — не self, а n<ClassId> (см. NNO210).
  • Итераторы циклов/генераторов: n, nn, nnn, ...
  • Импорты: обязателен алиас + порядок/разделение/сортировка (см. NNO301–NNO312).
  • Шум запрещён: комментарии и docstring’и запрещены (кроме # noqa...).

[!IMPORTANT]

Быстрый старт

Установка

python -m pip install -e .

Запуск линтера

Показывать только ошибки N-нотации:

python -m flake8 --select NNO .

Показывать ошибки N-нотации + остальные flake8 проверки:

python -m flake8 .

Тестирование

Запуск всех тестов:

python -m unittest discover -s tests -v

Коды (актуальные)

Уровень проекта:

  • NNO401: имя файла должно быть в формате n<цифры>.py
  • NNO500: README репозитория должен содержать точный блок объявления N-нотации

Уровень AST:

  • NNO101: недопустимое имя переменной
  • NNO104: недопустимое имя функции
  • NNO106: недопустимое имя класса
  • NNO107: имя производного класса должно соответствовать цепочке именования базового класса
  • NNO108 / NNO109: недопустимые имена членов (n_... / _n...)
  • NNO110: недопустимое имя итератора цикла / генератора (должно быть n, nn, ...)
  • NNO201 / NNO202: недопустимые имена параметров
  • NNO210: недопустимое имя получателя метода (замена self должна быть n<ИмяКласса[1:]>)
  • NNO602: docstring’и запрещены
  • NNO701: аннотации переменных запрещены

Уровень токенов:

  • NNO601: комментарии запрещены (исключение: разрешены # noqa / # noqa: ...)

  • Импорты:

    • NNO301: требуется алиас import X as N1
    • NNO302 / NNO303: требуется алиас from X import Y as N0000000001 (10 цифр)
    • NNO310: неверный порядок групп импортов (stdlib → third_party → local)
    • NNO311: неверное разделение пустыми строками между группами
    • NNO312: неверная числовая сортировка внутри группы

[!NOTE]

  • Плагин намеренно строгий и может помечать код, не использующий N-нотацию (включая __init__.py).
  • При необходимости используйте # noqa: NNO... для локального подавления ошибок.

Phasalo
Делаем красиво!

2026

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

n_notation-0.1.0.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

n_notation-0.1.0-py3-none-any.whl (17.4 kB view details)

Uploaded Python 3

File details

Details for the file n_notation-0.1.0.tar.gz.

File metadata

  • Download URL: n_notation-0.1.0.tar.gz
  • Upload date:
  • Size: 13.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for n_notation-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ab02fbb370c934d6011781d24e17a6dc7f3863d8c7b3d1bcc48f10f2202a72cc
MD5 67414f730fd54eedb72b1dd871299cd3
BLAKE2b-256 da3865925912e8bdadf416c7af18f02c94c4da6b4ca08f35b4edd1f669f26172

See more details on using hashes here.

File details

Details for the file n_notation-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: n_notation-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 17.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for n_notation-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 30832b6f59fb099de8a32161b035139bd09b4d4ea4cd8538f371133c58683be8
MD5 751718ab3f194917d5620dc96c253a6a
BLAKE2b-256 aca8b44ff9fbad8b10f2058e3fc758eba7e960a2dd2d28a643b451f4ea0b2a98

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page