Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Undefined name: import boto3 for lines 49 and 54 #1441

Merged
merged 1 commit into from
Feb 17, 2020

Conversation

cclauss
Copy link
Contributor

@cclauss cclauss commented Feb 14, 2020

flake8 testing of https://github.com/SeldonIO/seldon-core on Python 3.8.0

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

./examples/models/openvino_imagenet_ensemble/resources/model/Prediction.py:48:17: F821 undefined name 'boto3'
    s3_client = boto3.client('s3', endpoint_url=s3_endpoint)
                ^
./examples/models/openvino_imagenet_ensemble/resources/model/Prediction.py:53:19: F821 undefined name 'boto3'
    s3_transfer = boto3.s3.transfer.S3Transfer(s3_client)
                  ^
./examples/models/templates/ModelName.py:1:6: E999 SyntaxError: invalid syntax
from <your_loading_library> import <your_loading_function>
     ^
./util/loadtester/scripts/mnist_grpc_locust.py:148:32: F821 undefined name 'r'
                j = json.loads(r.content)
                               ^
1     E999 SyntaxError: invalid syntax
3     F821 undefined name 'boto3'
4

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.

@seldondev
Copy link
Collaborator

Hi @cclauss. Thanks for your PR.

I'm waiting for a SeldonIO member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

cclauss added a commit to cclauss/seldon-core that referenced this pull request Feb 14, 2020
@axsaucedo
Copy link
Contributor

boto3 is used in the code, so it may be due to installed dependencies (have a look at the rest of the file)

@axsaucedo
Copy link
Contributor

/hold

@cclauss
Copy link
Contributor Author

cclauss commented Feb 14, 2020

Some other Python file may be importing boto3 so it is already in memory. If that is the case then this PR is a safety measure because if that other file is changed to not not run first or import boto3 then this file would fail at runtime. Explicit is better than implicit.

@adriangonz
Copy link
Contributor

/hold cancel
/ok-to-test
/approve

You are right @cclauss, it makes sense to add the boto3 import. I imagine that right now is not crashing because it's taking a different code path.

@seldondev
Copy link
Collaborator

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: adriangonz

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@seldondev
Copy link
Collaborator

Mon Feb 17 10:51:35 UTC 2020
The logs for [pr-build] [1] will show after the pipeline context has finished.
https://github.com/SeldonIO/seldon-core/blob/gh-pages/jenkins-x/logs/SeldonIO/seldon-core/PR-1441/1.log

impatient try
jx get build logs SeldonIO/seldon-core/PR-1441 --build=1

@seldondev
Copy link
Collaborator

Mon Feb 17 10:51:40 UTC 2020
The logs for [lint] [2] will show after the pipeline context has finished.
https://github.com/SeldonIO/seldon-core/blob/gh-pages/jenkins-x/logs/SeldonIO/seldon-core/PR-1441/2.log

impatient try
jx get build logs SeldonIO/seldon-core/PR-1441 --build=2

@seldondev
Copy link
Collaborator

Mon Feb 17 11:02:02 UTC 2020
The logs for [pr-build] [3] will show after the pipeline context has finished.
https://github.com/SeldonIO/seldon-core/blob/gh-pages/jenkins-x/logs/SeldonIO/seldon-core/PR-1441/3.log

impatient try
jx get build logs SeldonIO/seldon-core/PR-1441 --build=3

@seldondev
Copy link
Collaborator

Mon Feb 17 11:02:11 UTC 2020
The logs for [lint] [4] will show after the pipeline context has finished.
https://github.com/SeldonIO/seldon-core/blob/gh-pages/jenkins-x/logs/SeldonIO/seldon-core/PR-1441/4.log

impatient try
jx get build logs SeldonIO/seldon-core/PR-1441 --build=4

@seldondev seldondev merged commit 5c51862 into SeldonIO:master Feb 17, 2020
@cclauss cclauss deleted the patch-1 branch February 17, 2020 11:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants