Python
Configuration - .deepsource.toml
.deepsource.toml
This section covers configurations specific to the python
analyzer. Please make sure to read the general configuration guide first.
name
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
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
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
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
skip_doc_coverage
-
Type: Array
-
Presence: optional
-
Description: Specify which artifacts to skip when calculating documentation coverage.
-
Available Values:
module
,magic
,init
andclass
module
- Ignore module docstringsmagic
- Ignore docstrings of magic methods (except "init")init
- Ignore docstrings of "init" methodsclass
- Ignore docstrings of class definitionsnonpublic
- Ignore docstrings for non-public classes and methods
-
Default Value: ["module", "magic", "init"]
-
Example:
skip_doc_coverage = ["module", "magic", "init"]
type_checker
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
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
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 than5
, while setting the threshold tocritical
will not flag any function. -
Available Values:
low
,medium
,high
,very-high
andcritical
Risk category | Cyclomatic complexity range | Recommended action |
---|---|---|
low | 1-5 | No action is needed. |
medium | 6-15 | Review and monitor. |
high | 16-25 | Review and refactor. Recommended to add detailed comments if the function absolutely needs to be kept as it is. |
very-high | 26-50 | Refactor to reduce the complexity. |
critical | >50 | Must 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"]
Updated about 1 year ago