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 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: недопустимое имя функции
  • 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.1.0.tar.gz (15.9 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.1.0-py3-none-any.whl (21.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: n_notation-1.1.0.tar.gz
  • Upload date:
  • Size: 15.9 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.1.0.tar.gz
Algorithm Hash digest
SHA256 dd988c92338d355f3d11ef5f378dbc6e5a7236e0bc50ceb61b0c70d868c01371
MD5 b5081f112e906b8840c0d96af0b2bf3e
BLAKE2b-256 9d1c34639d541dbfe316d7ecd67e798b447de803438083d5386be2fee435b843

See more details on using hashes here.

File details

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

File metadata

  • Download URL: n_notation-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 21.2 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7f54112ec2a8c7eab81f335e4dda4a18e6f6c25d1947dc678be6886b9f888d46
MD5 acb1a387baaedf6a9190324312b6d2e8
BLAKE2b-256 43f0b4ceee5ebbb3084bc9fca81d009b49453f004b6175b2626b818d0a230d5d

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