You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@superset.apache.org by GitBox <gi...@apache.org> on 2021/09/13 20:44:31 UTC

[GitHub] [superset] cclauss commented on issue #9953: [SIP-46] Proposal for strict Pylint enforcement

cclauss commented on issue #9953:
URL: https://github.com/apache/superset/issues/9953#issuecomment-918561133


   I concur with the sentiment stated above that pylint requires so many linter directives that it is sometimes perceived as unusable.  Black and isort have their place but are not really focused on runtime safety and program correctness.
   
   This repo currently has two _undefined names_ in Python code that none of the tools above would find.  These appeared without being detected since #3264
   
   I would encourage the use of the following command as part of the linting arsenal…
   
   $ `flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics`
   
   https://flake8.pycqa.org/en/latest/user/error-codes.html
   
   This flake8 test selection does  _not_ focus on "_style violations_" (the majority of flake8 error codes that [__psf/black__](https://github.com/psf/black) can autocorrect).  Instead, these tests focus on runtime safety and correctness:
   * __E9__ tests are about Python syntax errors usually raised because flake8 can not build an Abstract Syntax Tree (AST).  Often these issues are a sign of unused code or code that has not been ported to Python 3.  These would be compile-time errors in a compiled language but in a dynamic language like Python, they result in the script halting/crashing on the user.
   * __F63__ tests are usually about the confusion between identity and equality in Python.  Use ==/!= to compare str, bytes, and int literals is the classic case.  These are areas where __a == b__ is True but __a is b__ is False (or vice versa).  Python >= 3.8 will raise SyntaxWarnings on these instances.
   * __F7__ tests logic errors and syntax errors in type hints
   * __F82__ tests are almost always _undefined names_ which are usually a sign of a typo, missing imports, or code that has not been ported to Python 3.  These also would be compile-time errors in a compiled language but in Python, a __NameError__ is raised which will halt/crash the script on the user.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org