Skip to main content

flake8 plugin that checks rules regarding the staticmethod and classmethod decorators.

Project description

flake8-classmethod-staticmethod

Build Status Build Status

flake8 plugin that checks rules regarding the staticmethod and classmethod decorators.

Options

The plugin offers one flag, --select_csm1, accepting a list of error codes (see below) to be enabled. By default, the enabled errors are CSM101 and CSM131.

Error Codes

CSM100

@staticmethod should not be used.

CSM101

A method marked as @staticmethod should not reference the class it is defined in. Use @classmethod otherwise.

Bad

class MyClass:
    @staticmethod
    def my_name():
        return MyClass.__name__

Good

class MyClass:
    @classmethod
    def my_name(cls):
        return cls.__name__

CSM102

Do not inherit and override a method marked as @staticmethod.

Bad

class MyClass:
    @staticmethod
    def my_name():
        return "MyClass"

class MyChild:
    @staticmethod
    def my_name():
        return "MyChild"

Good

class MyClass:
    @classmethod
    def my_name(cls):
        return cls.__name__

CSM130

@classmethod should not be used.

CSM131

A method marked as @classmethod should access the parameter cls. Use @staticmethod otherwise. A special case that is exempt is a method that has a call to super().

Bad

class MyClass:
    @classmethod
    def my_name(cls):
        return "MyClass"

Good

class MyClass:
    @staticmethod
    def my_name():
        return "MyClass"

CSM132

A method marked as @classmethod should not reference the class it is defined in. Use the cls parameter.

class MyClass:
    @classmethod
    def my_name(cls):
        return MyClass.__name__

Good

class MyClass:
    @classmethod
    def my_name(cls):
        return cls.__name__

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

flake8_classmethod_staticmethod-2.1.tar.gz (4.6 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file flake8_classmethod_staticmethod-2.1.tar.gz.

File metadata

File hashes

Hashes for flake8_classmethod_staticmethod-2.1.tar.gz
Algorithm Hash digest
SHA256 26eba8e11e44f7f6a41cca49bf875e3e7d1ef8b06de84ebf496bb9b6845d3d52
MD5 52be68f9623eb9e8bdd92928258b779d
BLAKE2b-256 cd5e35b53a5fb9e490260365b03443065b68221d5596970579807bf560e37bf2

See more details on using hashes here.

File details

Details for the file flake8_classmethod_staticmethod-2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for flake8_classmethod_staticmethod-2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 44ca4822be9e403456d650c3edba0b2805dcd51f10dbe5bde05b8b104ffcd74f
MD5 2edbc9a257f6f433a266bd1bbd40d726
BLAKE2b-256 2cefb7292f6a3146d86bd2be38ec35db5c53116f4511b4ed92d585c06ef46b97

See more details on using hashes here.

Supported by

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