Skip to main content

A Flake8 plugin to detect modifications of constants

Project description

Flake8 Constants

A Flake8 plugin to detect modifications of constants in Python code, enhancing code quality and preventing unintended behavior.

Why It's Needed

Constants are meant to be immutable values that don't change throughout the execution of a program. However, Python doesn't have built-in support for true constants, relying on naming conventions (all uppercase) to indicate that a variable should be treated as a constant. This plugin helps enforce these conventions by detecting and reporting attempts to modify constants, which can lead to:

  1. Improved code reliability: Preventing accidental modifications of values that should remain constant.
  2. Better maintainability: Ensuring that constants are used as intended across the codebase.
  3. Clearer intent: Helping developers distinguish between mutable variables and immutable constants.
  4. Reduced bugs: Catching potential errors early in the development process.

Features

  • Detects reassignment of constants (variables with all uppercase names)
  • Identifies modifications to class constants
  • Catches augmented assignments to constants (e.g., +=, -=)
  • Warns about potential modifications through method calls on constants
  • Configurable list of non-modifying methods to reduce false positives
  • Works across different scopes: global, class, and function levels

Installation

You can install Flake8 Constants using pip:

pip install flake8-constants

Usage

Once installed, flake8 will automatically use this plugin. Run flake8 as usual:

flake8 your_script.py

or integrate it into your existing flake8 configuration.

Configuration

You can configure the plugin by creating a .flake8 file in your project root and adding the following options:

[flake8]
ignore = C001,C005

This example ignores errors related to constant reassignment and augmented assignments.

Error Codes

  • C001: Reassignment of constant
  • C002: Modification of constant in a function
  • C003: Modification of constant in a class method
  • C004: Modification of constant in a loop
  • C005: Modification of constant in a comprehension

Configuration

No additional configuration is required. The plugin works out of the box with default flake8 settings.

License

This project is licensed under the MIT License - see the LICENSE file for details.

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_constants-0.0.2.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

flake8_constants-0.0.2-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

File details

Details for the file flake8_constants-0.0.2.tar.gz.

File metadata

  • Download URL: flake8_constants-0.0.2.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.5

File hashes

Hashes for flake8_constants-0.0.2.tar.gz
Algorithm Hash digest
SHA256 9c1744a85daef67414c033456a8a69b9735f84b54c2d59944de36681058bf849
MD5 440859b389f55948ace54184b6a5d936
BLAKE2b-256 8a99cda9384577c7a3b05ab9a2e81561c1dffdd9e962bab4ef6e2719f79690a3

See more details on using hashes here.

File details

Details for the file flake8_constants-0.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for flake8_constants-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2bdce85b28bfa9616a73b0b69b20c84a94e27f13d153da0d51950d61b5900d7d
MD5 1720f500c58a5a8a985d5ef1b7736fb5
BLAKE2b-256 4119bb51de4d7142b7bb5ca53bd0eeb8b69cbf941b6bf03fdd3560728c3094da

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