Configuration - .deepsource.toml

This section covers configurations specific to the python analyzer. Please make sure to read the general configuration guide first.

name

  • Type: String
  • Presence: mandatory
  • Description: Shortcode of the analyzer.
  • Example:
name = "python"

🚧

Note

By default, the following are automatically detected and scanned for
dependencies, if found in the repository's root:

  • Pipfile
  • Pipfile.lock
  • poetry.lock
  • pyproject.toml (if containing a [tool.poetry] or [tool.flit] section)
  • requirements.txt
  • setup.py

If your package manager produces a lock file, specify both the requirements file and the lock file here.

meta

  • Type: Table
  • Presence: optional
  • Description: Any supported metadata to pass to the analyzer.
  • Example:
[analyzers.meta]
  runtime_version = "3.x.x"
  max_line_length = 88
  skip_doc_coverage = ["module", "magic", "init"]

runtime_version

  • Type: String
  • Presence: optional
  • Description: Runtime version of your language in semver.
  • Available Values: "2.x.x", "3.x.x"
  • Default Value: "3.x.x"
  • Example:
runtime_version = "3.x.x"

max_line_length

  • Type: Integer
  • Presence: optional
  • Description: Maximum allowed line length (including documentation).
  • Available Value: Any integer value greater than or equal to 79
  • Default Value:88
  • Example:
max_line_length = 88

skip_doc_coverage

  • Type: Array

  • Presence: optional

  • Description: Specify which artifacts to skip when calculating documentation coverage.

  • Available Values: module, magic, init and class

    • module - Ignore module docstrings
    • magic - Ignore docstrings of magic methods (except "init")
    • init - Ignore docstrings of "init" methods
    • class - Ignore docstrings of class definitions
    • nonpublic - Ignore docstrings for non-public classes and methods
  • Default Value: ["module", "magic", "init"]

  • Example:

skip_doc_coverage = ["module", "magic", "init"]

type_checker

  • Type: String
  • Presence: optional
  • Description: Activates the type checking analyzer. Please note: This will only raise type annotation issues.
  • Available Value: "mypy"
  • Default Value: None
  • Example:
type_checker = "mypy"

additional_builtins

  • Type: Array
  • Presence: optional
  • Description: Additional built-ins added by the user or third-party modules.
  • Available Value: An array with additional built-in names.
  • Default Value: None
  • Example:
additional_builtins = ["_", "pretty_output"]

cyclomatic_complexity_threshold

  • Type: String

  • Presence: optional

  • Description: Specify the acceptable risk category for your project as the threshold. All functions with complexity beyond this threshold will raise an issue. For example, setting the threshold to low will flag all functions that have a cyclomatic complexity of more than 5, while setting the threshold to critical will not flag any function.

  • Available Values: low, medium, high, very-high and critical

Risk categoryCyclomatic complexity rangeRecommended action
low1-5No action is needed.
medium6-15Review and monitor.
high16-25Review and refactor. Recommended to add detailed comments if the function absolutely needs to be kept as it is.
very-high26-50Refactor to reduce the complexity.
critical>50Must refactor this. This can make the code untestable and very difficult to understand.
  • Default Value: medium
  • Example:
[analyzers.meta]
cyclomatic_complexity_threshold = "high"

Sample Config

version = 1

test_patterns = [
  "tests/**",
  "test_*.py"
]

exclude_patterns = [
  "migrations/**",
  "**/examples/**"
]

[[analyzers]]
name = "python"
enabled = true
dependency_file_paths = ["requirements/development.txt"]

  [analyzers.meta]
  runtime_version = "3.x.x"
  type_checker = "mypy"
  max_line_length = 88
  skip_doc_coverage = ["module", "magic", "init"]
  additional_builtins = ["_", "pretty_output"]