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>... (см. NNO105, NNO107).
  • Члены класса: n_<...> / _n<...>; получатель метода — не self, а n<ClassId> (см. NNO210).
  • Итераторы циклов/генераторов: n, nn, nnn, ...
  • Импорты: обязателен алиас + порядок/разделение/сортировка (см. NNO301–NNO312).
  • Шум запрещён: комментарии и docstring’и запрещены (кроме # noqa...).

[!IMPORTANT]

Подсказка имени (suggest)

Если правило нейминга нарушено, линтер может предложить корректное имя прямо в тексте диагностики:

... (suggest <имя>)

Пример:

NNO101 var-name invalid got count (suggest n0123456789)

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

Установка

python -m pip install n-notation

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

Показывать только ошибки 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: недопустимое имя функции
  • NNO105: при наследовании имя класса должно быть производным (N<id>n<id>...)
  • 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-1.2.0.tar.gz (18.6 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-1.2.0-py3-none-any.whl (24.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: n_notation-1.2.0.tar.gz
  • Upload date:
  • Size: 18.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for n_notation-1.2.0.tar.gz
Algorithm Hash digest
SHA256 ee7f65ef26c0c6a6fc85c5278a5ea4bf08c1c671124db981a68cb93ab58581f0
MD5 7dd57e3f121f89ac393c46d4a9b49622
BLAKE2b-256 59e376cccbc4616f470269b654e1bfb405cbd12f047f7b0346497e3a12309db2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: n_notation-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 24.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for n_notation-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 42ddbadfc620f44157d6c4005cdb21c061106bfaeb60206f1de12f1dec40470a
MD5 364d569633613e7c9f447b78ecc85960
BLAKE2b-256 f860736d17e89b3756686985e0eec758ddd5b96fc02ad0f14c2adba4ec2528fd

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