-
Notifications
You must be signed in to change notification settings - Fork 557
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
Always exit unsuccessfully with sys.exit
#1481
Conversation
How did you install "pgcli" and how do you run it such that you have this error? I don't disagree with your proposed changes, I am just curious! :) |
This happens when running pgcli via the Please build system (more specifically when pgcli is defined as a To make sure there are no conflicts between modules installed system-wide and the packaged versions, the interpreter is invoked with |
`exit` is undefined when the `site` module isn't loaded (i.e. when Python is executed with the `-S` option), and `exit` isn't explicitly defined as a function or imported from elsewhere in `main.py`, so reaching any code path that attempts to execute `exit(1)` in this environment results in a `NameError` being raised: ``` Traceback (most recent call last): File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main return _run_code(code, main_globals, None, File "/usr/lib/python3.10/runpy.py", line 86, in _run_code exec(code, run_globals) File "[...]/__main__.py", line 415, in <module> File "[...]/__main__.py", line 399, in run File "[...]/__main__.py", line 389, in main File "/usr/lib/python3.10/runpy.py", line 220, in run_module mod_name, mod_spec, code = _get_module_details(mod_name) File "/usr/lib/python3.10/runpy.py", line 157, in _get_module_details code = loader.get_code(mod_name) File "[...]/__main__.py", line 264, in get_code File "[...]/__main__.py", line 204, in load_module File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 883, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "third_party/python3/__pgcli_main__.py", line 3, in <module> File "[...]/click/core.py", line 1157, in __call__ File "[...]/click/core.py", line 1078, in main File "[...]/click/core.py", line 1434, in invoke File "[...]/click/core.py", line 783, in invoke File "[...]/pgcli/main.py", line 1617, in cli File "[...]/pgcli/main.py", line 766, in connect NameError: name 'exit' is not defined. Did you mean: 'atexit'? ``` When exiting unsuccessfully, do so with `sys.exit(1)` - this is already used in several other places in `main.py`, and is always used (with exit code 0) when exiting successfully.
315ee3a
to
1ed8528
Compare
Apparently |
@chrisnovakovic Thank you for the PR! 🍬 |
Description
exit
isn't defined as a function or imported inmain.py
, so reaching any code path that attempts to executeexit(1)
results in aNameError
being raised:When exiting unsuccessfully, do so with
sys.exit(1)
- this is already used in several other places inmain.py
, and is always used (with exit code 0) when exiting successfully.Checklist
changelog.rst
.AUTHORS
file (or it's already there).pip install pre-commit && pre-commit install
), and ranblack
on my code.