libra icon indicating copy to clipboard operation
libra copied to clipboard

Undefined names in Python code

Open cclauss opened this issue 3 years ago • 2 comments

flake8 testing of https://github.com/Palashio/libra on Python 3.9.0rc1+

$ flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics

./libra/dev_pipeliner/pipeline_sample.py:16:17: F821 undefined name 'mypreprocessor'
                mypreprocessor,
                ^
./libra/dev_pipeliner/regression_split_functions.py:121:30: F821 undefined name 'generateRegressionPlots'
    init_plots, plot_names = generateRegressionPlots(
                             ^
./libra/query/feedforward_nn.py:79:16: F821 undefined name 'tkFileDialog'
    dir_path = tkFileDialog.askdirectory()
               ^
./libra/query/feedforward_nn.py:84:16: F821 undefined name 'tkFileDialog'
    filename = tkFileDialog.askopenfilename()
               ^
./libra/query/recommender_systems.py:37:15: F821 undefined name 'Fore'
        print(Fore.BLUE + (" " * 2 * counter) +
              ^
./libra/modeling/prediction_model_creation.py:14:44: F821 undefined name 'x'
    key=[k for k,v in add_layer.items() if x in v]
                                           ^
./libra/modeling/prediction_model_creation.py:54:46: F821 undefined name 'x'
    key = [k for k,v in add_layer.items() if x in v]
                                             ^
./tools/examples/Classification/Libra example-Decision Tree Query.py:10:1: E999 SyntaxError: invalid syntax
!pip install libra
^
./tools/examples/Classification/Libra Example-SVM Query.py:12:1: E999 SyntaxError: invalid syntax
!pip install libra
^
./tools/examples/Classification/Credit Card Fraud detection/credit_card_fraud_detection_using_libra.py:25:5: E999 SyntaxError: invalid syntax
pip install -U libra
    ^
3     E999 SyntaxError: invalid syntax
7     F821 undefined name 'mypreprocessor'
10

https://flake8.pycqa.org/en/latest/user/error-codes.html

On the flake8 test selection, this PR does not focus on "style violations" (the majority of flake8 error codes that psf/black can autocorrect). Instead these tests are 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.

cclauss avatar Aug 18 '20 18:08 cclauss

cool, thanks! do you suggest I go through and correct these?

Palashio avatar Aug 18 '20 19:08 Palashio

Yes. I think that many of these are missing imports.

cclauss avatar Aug 18 '20 20:08 cclauss