Is there any linting tool in existence that is capable of disallowing the use of variadic arguments in functions (*args, **kwargs), without needing to write a plugin?
Disallow Python Variadic Arguments
32 Views Asked by Ryan Johnson At
1
There are 1 best solutions below
Related Questions in PYTHON
- How to store a date/time in sqlite (or something similar to a date)
- Instagrapi recently showing HTTPError and UnknownError
- How to Retrieve Data from an MySQL Database and Display it in a GUI?
- How to create a regular expression to partition a string that terminates in either ": 45" or ",", without the ": "
- Python Geopandas unable to convert latitude longitude to points
- Influence of Unused FFN on Model Accuracy in PyTorch
- Seeking Python Libraries for Removing Extraneous Characters and Spaces in Text
- Writes to child subprocess.Popen.stdin don't work from within process group?
- Conda has two different python binarys (python and python3) with the same version for a single environment. Why?
- Problem with add new attribute in table with BOTO3 on python
- Can't install packages in python conda environment
- Setting diagonal of a matrix to zero
- List of numbers converted to list of strings to iterate over it. But receiving TypeError messages
- Basic Python Question: Shortening If Statements
- Python and regex, can't understand why some words are left out of the match
Related Questions in CONTINUOUS-INTEGRATION
- Cannot connect to Postgres Database when running Quarkus Tests with Gitlab ci
- Android SafeArgs gives error with GitHub actions
- Display coverage report on browser
- How to set variables across several Earthfiles with earthly for continuous integration
- Getting " Unauthorized Access" error in Git Actions(CI) when trying to run Fastlane(CD)
- Cost saving recommendations and best practices for Azure
- NodeJS application deployment on Digital Ocean using Github Actions
- Getting CI/CD error on biulding step in React Azure Pipeline
- gitlab ci: 'compose' is not a docker command
- I'm in Playwright, how do I run specific test cases by tag in (CI) execution
- Incorrect java version on Jenkins agent
- Azure YAML Pipeline schedule to run on the last Sunday of the month at 4 AM
- how to provide custom variables in gitlab api?
- How to build an artifact from a given branch in azure pipelines?
- CI testing with platformio with one build
Related Questions in LINT
- Context declaration returns error 'Property is incompatible with index signature.' in build
- In Android Studio, why android.util.ArrayMap.getOrDefault link to kotlin.collections.Map.getOrDefault?
- How to catch potentially undefined variables with pylint or mypy?
- Disallow Python Variadic Arguments
- How to get the list of files that will be pushed in git push?
- How to find lint rule that move '>' starting new lines to previous lines in html?
- CMake: C++ linting not recognising include directory
- Linting for Pug and SASS inside Svelte files
- Linting errors for unused/undefined variables in React
- Android Custom Lint Detector - replicate suspend function warning for non suspend functions
- How to enable linting after ignore_for_file in the same file
- Clang-tidy change hungarian notation prefixes
- Why is VSCode Ctrl+Space suggesting all words, vice methods/attributes?
- Why does the implementation_imports linting rule only work in lib directory?
- How can I suppress ruff linting on a block of code
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
No, whilst absence of evidence is not evidence of absence. I did a pretty thorough search for this a while ago and found nothing. ruffs linter pulls in rules from most of the major linters, (pflakes, flake8, black, isort) it doesn't have a rule for it.
I know the pain of this... I've seen some code written by well meaning untrained programmers that
**kwargsas the signature for every function to avoid having to change the signature of their functions, but you end up with code that is impossible to reason about or type check.Unfortunately, there are many valid/unavoidable use cases for them, that a hard "no" by a linter hasn't become a thing.
In our case we solved this issue by first doing a bunch of education/training and then by using mypy with -no-untyped-defs to enforce typing of function definitions. The difficulty of typing of **kwargs and *args was enough "encouragement" to cement the change.