* Install and configure flake8-bugbear to spot mutable default arguments
* Fix mutable default arguments in OrderingFilter methods
- Fixed get_default_valid_fields() and get_valid_fields() methods in filters.py
- Changed context={} default parameter to context=None to prevent mutable default anti-pattern
- Added proper None checking with context = {} assignment inside methods
Why this fix is important:
- Mutable default arguments (context={}) create shared state across function calls
- Same dict object gets reused, potentially causing unexpected side effects
- This is a well-known Python anti-pattern that can lead to bugs
What was changed:
- Line 249: get_default_valid_fields(self, queryset, view, context=None)
- Line 285: get_valid_fields(self, queryset, view, context=None)
- Added 'if context is None: context = {}' in both methods
Testing results:
- All existing filter tests pass (pytest tests/test_filters.py)
- Custom verification script confirms fix works correctly
- Maintains backward compatibility
- No breaking changes to API
Addresses GitHub issue #9741
---------
Co-authored-by: Bruno Alla <alla.brunoo@gmail.com>
* Standardize spelling to American English (only in .md files)
* Update remaining British english spell words to American english style
* Configures the codespell pre-commit hook to enforce US English consistency
changes:
- Activates the `en-GB_to_en-US` built-in dictionary to flag British spellings
- Created codespell-ignore-words.txt file to ignore specific words
- include `code` and `names` for comprehensive typo checking in technical contexts.
- changed the 'lets' to 'let's'.
* Update blacken-docs and black to latest versions
* Include docs folder for blackend-docs
* Run blacken docs on docs folder
* Fix broken link on authentication page
* Do not ignore .codespellrc from git
* Add rudimentary codespell config
* Add pre-commit definition for codespell
* more custom skips for codespell - long lines, lines with ú etc
* [DATALAD RUNCMD] Do interactive fixing of some ambigous typos
=== Do not change lines below ===
{
"chain": [],
"cmd": "codespell -w -i 3 -C 2 ./docs/community/release-notes.md",
"exit": 0,
"extra_inputs": [],
"inputs": [],
"outputs": [],
"pwd": "."
}
^^^ Do not change lines above ^^^
* BF: pre-commit needs to duplicate some of the skips for codespell
Known issue -- yet to be addressed:
https://github.com/codespell-project/codespell/issues/3196
* Move codespell configuration into setup.cfg
* blacken-docs: Manual fixes for command to pass without errors
* blacken-docs: Adds blacken-docs step to precommit hook.
* blacken-docs: Adds changes made by command itself.
* blacken-docs: Modifies blacken-docs step to only process files under "docs" directory
* blacken-docs: Updates pre-commit config file to exclude all directories other than "docs" to be compatible with "--all-files" flag.
* blacken-docs: Adds commas at the end to make it look identical to pre-black version
This fixes recent issues with installing isort via pre-commit that was
introduced in recent versions of poetry-core.
See https://github.com/PyCQA/isort/pull/2078