Files
Hotel-Booking/Backend/venv/lib/python3.12/site-packages/bandit/plugins/asserts.py
Iliyan Angelov 62c1fe5951 updates
2025-12-01 06:50:10 +02:00

84 lines
2.3 KiB
Python

#
# Copyright 2014 Hewlett-Packard Development Company, L.P.
#
# SPDX-License-Identifier: Apache-2.0
r"""
============================
B101: Test for use of assert
============================
This plugin test checks for the use of the Python ``assert`` keyword. It was
discovered that some projects used assert to enforce interface constraints.
However, assert is removed with compiling to optimised byte code (`python -O`
producing \*.opt-1.pyc files). This caused various protections to be removed.
Consider raising a semantically meaningful error or ``AssertionError`` instead.
Please see
https://docs.python.org/3/reference/simple_stmts.html#the-assert-statement for
more info on ``assert``.
**Config Options:**
You can configure files that skip this check. This is often useful when you
use assert statements in test cases.
.. code-block:: yaml
assert_used:
skips: ['*_test.py', '*test_*.py']
:Example:
.. code-block:: none
>> Issue: Use of assert detected. The enclosed code will be removed when
compiling to optimised byte code.
Severity: Low Confidence: High
CWE: CWE-703 (https://cwe.mitre.org/data/definitions/703.html)
Location: ./examples/assert.py:1
1 assert logged_in
2 display_assets()
.. seealso::
- https://bugs.launchpad.net/juniperopenstack/+bug/1456193
- https://bugs.launchpad.net/heat/+bug/1397883
- https://docs.python.org/3/reference/simple_stmts.html#the-assert-statement
- https://cwe.mitre.org/data/definitions/703.html
.. versionadded:: 0.11.0
.. versionchanged:: 1.7.3
CWE information added
"""
import fnmatch
import bandit
from bandit.core import issue
from bandit.core import test_properties as test
def gen_config(name):
if name == "assert_used":
return {"skips": []}
@test.takes_config
@test.test_id("B101")
@test.checks("Assert")
def assert_used(context, config):
for skip in config.get("skips", []):
if fnmatch.fnmatch(context.filename, skip):
return None
return bandit.Issue(
severity=bandit.LOW,
confidence=bandit.HIGH,
cwe=issue.Cwe.IMPROPER_CHECK_OF_EXCEPT_COND,
text=(
"Use of assert detected. The enclosed code "
"will be removed when compiling to optimised byte code."
),
)