Skip to main content

Check Python files for repeat use of strings

Project description

License PyPI CI pre-commit.ci status CodeQL codecov.io readthedocs.org python3.8 Black pylint

Check Python files for repeat use of strings

Escape commas with \\ (\ when enclosed in single quotes)

Defaults can be configured in your pyproject.toml file

Installation

$ pip install constcheck

Usage

Commandline

usage: constcheck [-h] [-v] [-n] [-c INT] [-l INT] [-s STR] [-i LIST] [-I LIST]
                             [--ignore-from [FILE=LIST [FILE=LIST ...]]]
                             [path [path ...]]

positional arguments:
  path                                       path(s) to check files for (default: .)

optional arguments:
  -h, --help                                 show this help message and exit
  -v, --version                              show version and exit
  -n, --no-ansi                              disable ansi output
  -c INT, --count INT                        minimum number of repeat strings (default: 3)
  -l INT, --length INT                       minimum length of repeat strings (default: 3)
  -s STR, --string STR                       parse a string instead of a file
  -i LIST, --ignore-strings LIST             comma separated list of strings to exclude
  -I LIST, --ignore-files LIST               comma separated list of files to exclude
  --ignore-from [FILE=LIST [FILE=LIST ...]]  comma separated list of strings to exclude from file

API

>>> from constcheck import constcheck
>>> EXAMPLE = """
... STRING_1 = "Hey"
... STRING_2 = "Hey"
... STRING_3 = "Hey"
... STRING_4 = "Hello"
... STRING_5 = "Hello"
... STRING_6 = "Hello"
... STRING_7 = "Hello"
... STRING_8 = "Hello, world"
... STRING_9 = "Hello, world"
... STRING_10 = "Hello, world"
... STRING_11 = "Hello, world"
... STRING_12 = "Hello, world"
... """
>>> constcheck(string=EXAMPLE)
3   | Hey
4   | Hello
5   | Hello, world
<BLANKLINE>
1

With the count argument

>>> constcheck(string=EXAMPLE, count=4)
4   | Hello
5   | Hello, world
<BLANKLINE>
1

With the length argument

>>> constcheck(string=EXAMPLE, length=6)
5   | Hello, world
<BLANKLINE>
1

With the ignore_strings argument which accepts list of str objects

>>> constcheck(string=EXAMPLE, ignore_strings=["Hello, world", "Hello"])
3   | Hey
<BLANKLINE>
1

Config

All keyword arguments available to constcheck() can be configured in the pyproject.toml file

[tool.constcheck]
path = "."
count = 3
length = 3
ignore_strings = ["Hello", "Hello, world"]
ignore_files = ["tests/__init__.py"]
filter = false
no_color = false

[tool.constcheck.ignore_from]
"tests/__init__.py" = ["Hello, world"]

pre-commit

constcheck can be used as a pre-commit hook

It can be added to your .pre-commit-config.yaml as follows:

repos:
  - repo: https://github.com/jshwi/constcheck
    rev: v0.7.0
    hooks:
      - id: constcheck
        args:
          - "--count"
          - "3"
          - "--length"
          - "3"

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

constcheck-0.8.0.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

constcheck-0.8.0-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

Details for the file constcheck-0.8.0.tar.gz.

File metadata

  • Download URL: constcheck-0.8.0.tar.gz
  • Upload date:
  • Size: 11.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.1 CPython/3.8.13 Darwin/22.2.0

File hashes

Hashes for constcheck-0.8.0.tar.gz
Algorithm Hash digest
SHA256 3fa3058fa9a4b9a954ebb8c18349a158e69319de7a3738d811fd060b702932bd
MD5 86845bcb213e96f63831732f3e3c0918
BLAKE2b-256 12f0c2bd9163e90ab99bb2a35e26b8e2ede53d0b148a4b7ede6ba604259ca029

See more details on using hashes here.

File details

Details for the file constcheck-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: constcheck-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 11.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.1 CPython/3.8.13 Darwin/22.2.0

File hashes

Hashes for constcheck-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 61dd165b7c487547df0061b2b054556aa1ea72f081035d4eaee120f9c85ff04f
MD5 f344b35a39a18c67f6df9a281f63b96e
BLAKE2b-256 302e417a4bfa594b528a820f052ff20e8e315636f3cb352d7a705346c3a0cd1c

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