-
Notifications
You must be signed in to change notification settings - Fork 3.1k
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
Add shell auto-completion #1603
base: main
Are you sure you want to change the base?
Conversation
Co-authored-by: Tienbruh <[email protected]> Co-authored-by: JesusG2022 <[email protected]>
Added argcomplete to the dependencies
Co-authored-by: hoonman <[email protected]> Co-authored-by: JesusG2022 <[email protected]>
Added argcomplete to _cli.py
Co-authored-by: Tienbruh <[email protected]> Co-authored-by: JesusG2022 <[email protected]>
Co-authored-by: Tienbruh <[email protected]> Co-authored-by: JesusG2022 <[email protected]>
Added bash command requirement for bash in the readme file
Co-authored-by: Tienbruh <[email protected]> Co-authored-by: JesusG2022 <[email protected]>
edit readme structure
Co-authored-by: Tienbruh <[email protected]> Co-authored-by: JesusG2022 <[email protected]>
simplified step to register argcomplete
Co-authored-by: hoonman <[email protected]> Co-authored-by: JesusG2022 <[email protected]>
Co-authored-by: hoonman <[email protected]> Co-authored-by: JesusG2022 <[email protected]>
Added activation instructions for zsh and fish to readme
…activation Co-authored-by: Tienbruh <[email protected]> Co-authored-by: JesusG2022 <[email protected]>
Modified readme to include both temporary and permanent autocomplete
Co-authored-by: Tienbruh <[email protected]> Co-authored-by: JesusG2022 <[email protected]>
Co-authored-by: Tienbruh <[email protected]> Co-authored-by: JesusG2022 <[email protected]>
removed global completion and added subsections for different shells
Co-authored-by: hoonman <[email protected]> Co-authored-by: JesusG2022 <[email protected]>
Co-authored-by: hoonman <[email protected]> Co-authored-by: JesusG2022 <[email protected]>
Reworded CLI Usage section
Co-authored-by: hoonman <[email protected]> Co-authored-by: JesusG2022 <[email protected]>
Fixed readme typo
Merge OpenAI main with our fork
Co-authored-by: Tienbruh <[email protected]> Co-authored-by: JesusG2022 <[email protected]>
openai main -> our fork
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for putting this together!
pyproject.toml
Outdated
@@ -17,6 +17,7 @@ dependencies = [ | |||
"cached-property; python_version < '3.8'", | |||
"tqdm > 4", | |||
"jiter>=0.4.0, <1", | |||
"argcomplete >= 1.12.0" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd like to avoid adding a new required dependency, can we add this as an optional dependency?
I'm thinking something like this, thoughts?
pip install openai[cli]
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for the feedback! Our team discussed this and wanted to share our approach to add argcomplete as an optional dependency.
To avoid making argcomplete a required dependency, we plan to:
- Change
argcomplete
from a required to an optional dependency inpyproject.toml
. - Add a proxy file for
argcomplete
to handle optional imports. - Update the
__init__.py
file in the extras directory to reflect these changes. - Modify the README to instruct users to use the
[cli]
option to installargcomplete
.
Please let us know if there are any additional changes we should consider.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That sounds good to me! I don't think there's any other changes needed.
For what it's worth I don't think we need the complexity of a proxy here though as the dependency is only ever used in one place anyway we can just change that call site to try ... except ImportError
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We have included the changes for making argcomplete
an optional dependency, the try...except ImportError
to the _cli.py
, as well as the pip install openai[cli]
command in the README. Let me know if there's anything else that needs modification. Thank you!
Moved argcomplete to become an optional dependency
add try except block for importing argcomplete and changes to the readme
pip install openai[cli] | ||
``` | ||
|
||
### Bash & Zsh |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
question: are there existing docs we could link to here instead of listing out all the possible environments here? maybe argcomplete's docs?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Both temporary and permanent argcomplete activation instructions for Fish and Powershell are available on argcomplete's contrib directory. However, only the temporary activation commands for Bash and Zsh are listed on argcomplete's README file. The commands to activate autocompletion permanently for Bash and Zsh are not found anywhere on argcomplete's docs.
What are your opinions on replacing all the other environment activation instructions with the appropriate links to argcomplete's docs, while keeping these lines for permanent activation on Bash and Zsh?
For Bash:
register-python-argcomplete openai >> ~/.bashrc
For Zsh:
register-python-argcomplete openai >> ~/.zshrc
Changes being requested
Contributors: @Tienbruh, @JesusG2022, @hoonman
Our team has implemented auto-completion for various shell environments (Bash, Zsh, PowerShell, and Fish) using argcomplete, a Python library that enables tab completion for argparse. We have integrated argcomplete into the
_cli.py
file, updated thepyproject.toml
file to include argcomplete, and revised theREADME.md
to provide instructions on activating the tab completion feature.Additional context & links
This addresses #843