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<цифры>.pyNNO500: 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 N1NNO302/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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee7f65ef26c0c6a6fc85c5278a5ea4bf08c1c671124db981a68cb93ab58581f0
|
|
| MD5 |
7dd57e3f121f89ac393c46d4a9b49622
|
|
| BLAKE2b-256 |
59e376cccbc4616f470269b654e1bfb405cbd12f047f7b0346497e3a12309db2
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
42ddbadfc620f44157d6c4005cdb21c061106bfaeb60206f1de12f1dec40470a
|
|
| MD5 |
364d569633613e7c9f447b78ecc85960
|
|
| BLAKE2b-256 |
f860736d17e89b3756686985e0eec758ddd5b96fc02ad0f14c2adba4ec2528fd
|