flake8-cls-attr-order
A flake8 plugin that checks class attributes for the proper alphabetical order.
Tools
Production
- python 3.7+
- flake8
Development
Installation
PYPI
pip install flake8-cls-attr-order
β¨ π° β¨
Source code
git clone git@github.com:vyahello/flake8-cls-attr-order.git
cd flake8-cls-attr-order
python3 -m venv venv
. venv/bin/activate
pip install -e .
Errors
Codes
CL100
- class name should start with upper case letter.CL101
- wrong class constants order.CL200
- @staticmethod is detected, should be converted to function.CL201
- wrong class methods order. Order should be@property
,@classmethod
,@staticmethod
and instance methods.
Sample
# cls.py
class foo:
BAR = ()
ABRA = {}
@staticmethod
def smethod(): ...
def bmethod(self): ...
def amethod(self): ...
@property
def pmethod(self): ...
@classmethod
def cmethod(cls): ...
flake8 cls.py
cls.py:1:1: CL100 "foo" class name should start with upper case letter
cls.py:1:1: CL101 wrong "foo" class constants order, should be "ABRA, BAR"
cls.py:1:1: CL201 wrong "foo" class methods order. Comply with @property, @classmethod, @staticmethod, instance methods. Should be "pmethod, cmethod, smethod, amethod, bmethod"
cls.py:6:5: CL200 "smethod" @staticmethod is detected, should be converted to function
Development notes
Testing
Unit tests
Please run the following script to start plugin unit tests:
pytest
Package tests
Please run the following script to start plugin package tests:
bats test-package.bats
CI
To be able to run code analysis, please execute command below:
./analyse-source-code.sh
Meta
Author β Vladimir Yahello.
Distributed under the MIT
license. See license for more information.
You can reach out me at:
- vyahello@gmail.com
- https://twitter.com/vyahello
- https://www.linkedin.com/in/volodymyr-yahello-821746127
Contributing
I would highly appreciate any contribution and support. If you are interested to add your ideas into project please follow next simple steps:
- Clone the repository
- Configure
git
for the first time after cloning with yourname
andemail
pip install -r requirements.txt
to install all project dependenciespip install -r requirements-dev.txt
to install all development project dependencies- Create your feature branch (git checkout -b feature/fooBar)
- Commit your changes (git commit -am βAdd some fooBarβ)
- Push to the branch (git push origin feature/fooBar)
- Create a new Pull Request
Whatβs next
All recent activities and ideas are described at project issues page. If you have ideas you want to change/implement please do not hesitate and create an issue.