Closed cclauss closed 2 months ago
I do only want that call to happen once at startup and stay as the default that way, this is intended behavior. May need to be re-written to just have that as a pre-defined global and use it in the function args that way
Any function call that's used in a default argument will only be performed once, at definition time. The returned value will then be reused by all calls to the function, which can lead to unexpected behavior.
%
ruff check --select=B008
%
ruff rule B008
function-call-in-default-argument (B008)
Derived from the flake8-bugbear linter.
What it does
Checks for function calls in default function arguments.
Why is this bad?
Any function call that's used in a default argument will only be performed once, at definition time. The returned value will then be reused by all calls to the function, which can lead to unexpected behaviour.
Calls can be marked as an exception to this rule with the [
lint.flake8-bugbear.extend-immutable-calls
] configuration option.Arguments with immutable type annotations will be ignored by this rule. Types outside of the standard library can be marked as immutable with the [
lint.flake8-bugbear.extend-immutable-calls
] configuration option as well.Example
Use instead:
If the use of a singleton is intentional, assign the result call to a module-level variable, and use that variable in the default argument:
Options
lint.flake8-bugbear.extend-immutable-calls