-
Notifications
You must be signed in to change notification settings - Fork 109
Replace black with ruff linter / formatter #392
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
Merged
Merged
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,4 +1,4 @@ | ||
| # Contributing | ||
| # Contributing | ||
|
|
||
| ## Installing development versions | ||
|
|
||
|
|
@@ -17,45 +17,45 @@ poetry add git+https://github.com/pinecone-io/pinecone-python-client.git@44fc7ed | |
| ``` | ||
|
|
||
|
|
||
| ## Developing locally with Poetry | ||
| ## Developing locally with Poetry | ||
|
|
||
| [Poetry](https://python-poetry.org/) is a tool that combines [virtualenv](https://virtualenv.pypa.io/en/latest/) usage with dependency management, to provide a consistent experience for project maintainers and contributors who need to develop the pinecone-python-client | ||
| as a library. | ||
| as a library. | ||
|
|
||
| A common need when making changes to the Pinecone client is to test your changes against existing Python code or Jupyter Notebooks that `pip install` the Pinecone Python client as a library. | ||
| A common need when making changes to the Pinecone client is to test your changes against existing Python code or Jupyter Notebooks that `pip install` the Pinecone Python client as a library. | ||
|
|
||
| Developers want to be able to see their changes to the library immediately reflected in their main application code, as well as to track all changes they make in git, so that they can be contributed back in the form of a pull request. | ||
| Developers want to be able to see their changes to the library immediately reflected in their main application code, as well as to track all changes they make in git, so that they can be contributed back in the form of a pull request. | ||
|
|
||
| The Pinecone Python client therefore supports Poetry as its primary means of enabling a consistent local development experience. This guide will walk you through the setup process so that you can: | ||
| The Pinecone Python client therefore supports Poetry as its primary means of enabling a consistent local development experience. This guide will walk you through the setup process so that you can: | ||
| 1. Make local changes to the Pinecone Python client that are separated from your system's Python installation | ||
| 2. Make local changes to the Pinecone Python client that are immediately reflected in other local code that imports the pinecone client | ||
| 3. Track all your local changes to the Pinecone Python client so that you can contribute your fixes and feature additions back via GitHub pull requests | ||
|
|
||
| ### Step 1. Fork the Pinecone python client repository | ||
|
|
||
| On the [GitHub repository page](https://github.com/pinecone-io/pinecone-python-client) page, click the fork button at the top of the screen and create a personal fork of the repository: | ||
| On the [GitHub repository page](https://github.com/pinecone-io/pinecone-python-client) page, click the fork button at the top of the screen and create a personal fork of the repository: | ||
|
|
||
|  | ||
|
|
||
| It will take a few seconds for your fork to be ready. When it's ready, **clone your fork** of the Pinecone python client repository to your machine. | ||
| It will take a few seconds for your fork to be ready. When it's ready, **clone your fork** of the Pinecone python client repository to your machine. | ||
|
|
||
| Change directory into the repository, as we'll be setting up a virtualenv from within the root of the repository. | ||
| Change directory into the repository, as we'll be setting up a virtualenv from within the root of the repository. | ||
|
|
||
| ### Step 1. Install Poetry | ||
| ### Step 1. Install Poetry | ||
|
|
||
| Visit [the Poetry site](https://python-poetry.org/) for installation instructions. | ||
| Visit [the Poetry site](https://python-poetry.org/) for installation instructions. | ||
|
|
||
| ### Step 2. Install dependencies | ||
| ### Step 2. Install dependencies | ||
|
|
||
| Run `poetry install` from the root of the project. | ||
| Run `poetry install` from the root of the project. | ||
|
|
||
| ### Step 3. Activate the Poetry virtual environment and verify success | ||
|
|
||
| Run `poetry shell` from the root of the project. At this point, you now have a virtualenv set up in this directory, which you can verify by running: | ||
| Run `poetry shell` from the root of the project. At this point, you now have a virtualenv set up in this directory, which you can verify by running: | ||
|
|
||
| `poetry env info` | ||
|
|
||
| You should see something similar to the following output: | ||
| You should see something similar to the following output: | ||
|
|
||
| ```bash | ||
| Virtualenv | ||
|
|
@@ -73,17 +73,61 @@ Path: /home/linuxbrew/.linuxbrew/opt/[email protected] | |
| ``` | ||
| If you want to extract only the path to your new virtualenv, you can run `poetry env info --path` | ||
|
|
||
| ## Loading your virtualenv in another shell | ||
| ### Step 4. Enable pre-commit hooks. | ||
|
|
||
| It's a common need when developing against this client to load it as part of some other application or Jupyter Notebook code, modify | ||
| it directly, see your changes reflected immediately and also have your changes tracked in git so you can contribute them back. | ||
| Run `poetry run pre-commit install` to enable checks to run when you commit so you don't have to find out during your CI run that minor lint issues need to be addressed. | ||
|
|
||
| It's important to understand that, by default, if you open a new shell or terminal window, or, for example, a new pane in a tmux session, | ||
| your new shell will not yet reference the new virtualenv you created in the previous step. | ||
| ## Common tasks | ||
|
|
||
| ### Running tests | ||
|
|
||
| - Unit tests: `make test-unit` | ||
| - Integration tests: `PINECONE_API_KEY="YOUR API KEY" make test-integration` | ||
| - Run the tests in a single file: `poetry run pytest tests/unit/data/test_bulk_import.py -s -vv` | ||
|
|
||
| ### Running the ruff linter / formatter | ||
|
|
||
| These should automatically trigger if you have enabled pre-commit hooks with `poetry run pre-commit install`. But in case you want to trigger these yourself, you can run them like this: | ||
|
|
||
| ``` | ||
| poetry run ruff check --fix # lint rules | ||
| poetry run ruff format # formatting | ||
| ``` | ||
|
|
||
| If you want to adjust the behavior of ruff, configurations are in `pyproject.toml`. | ||
|
|
||
|
|
||
| ### Consuming API version upgrades | ||
|
|
||
| These instructions can only be followed by Pinecone employees with access to our private APIs repository. | ||
|
|
||
| Prerequisites: | ||
| - You must be an employee with access to private Pinecone repositories | ||
| - You must have [Docker Desktop](https://www.docker.com/products/docker-desktop/) installed and running. Our code generation script uses a dockerized version of the OpenAPI CLI. | ||
| - You must have initialized the git submodules under codegen | ||
|
|
||
| ```sh | ||
| git submodule | ||
| ``` | ||
|
|
||
| To regenerate the generated portions of the client with the latest version of the API specifications, you need to have Docker Desktop running on your local machine. | ||
|
|
||
| ```sh | ||
| ./codegen/ | ||
| ``` | ||
|
|
||
|
|
||
| ## Loading your virtualenv in another shell | ||
|
|
||
| It's a common need when developing against this client to load it as part of some other application or Jupyter Notebook code, modify | ||
| it directly, see your changes reflected immediately and also have your changes tracked in git so you can contribute them back. | ||
|
|
||
| It's important to understand that, by default, if you open a new shell or terminal window, or, for example, a new pane in a tmux session, | ||
| your new shell will not yet reference the new virtualenv you created in the previous step. | ||
|
|
||
| ### Step 1. Get the path to your virtualenv | ||
|
|
||
| We're going to first get the path to the virtualenv we just created, by running: | ||
| We're going to first get the path to the virtualenv we just created, by running: | ||
|
|
||
| ```bash | ||
| poetry env info --path | ||
|
|
@@ -93,75 +137,52 @@ You'll get a path similar to this one: `/home/youruser/.cache/pypoetry/virtuale | |
|
|
||
| ### Step 2. Load your existing virtualenv in your new shell | ||
|
|
||
| Within this path is a shell script that lives at `<your-virtualenv-path>/bin/activate`. Importantly, you cannot simply run this script, but you | ||
| must instead source it like so: | ||
| Within this path is a shell script that lives at `<your-virtualenv-path>/bin/activate`. Importantly, you cannot simply run this script, but you | ||
| must instead source it like so: | ||
|
|
||
| ```bash | ||
| source /home/youruser/.cache/pypoetry/virtualenvs/pinecone-fWu70vbC-py3.9/bin/activate | ||
| ``` | ||
| In the above example, ensure you're using your own virtualenv path as returned by `poetry env info --path`. | ||
|
|
||
| ### Step 3. Test out your virtualenv | ||
| ### Step 3. Test out your virtualenv | ||
|
|
||
| Now, we can test that our virtualenv is working properly by adding a new test module and function to the `pinecone` client within our virtualenv | ||
| and running it from the second shell. | ||
| Now, we can test that our virtualenv is working properly by adding a new test module and function to the `pinecone` client within our virtualenv | ||
| and running it from the second shell. | ||
|
|
||
| #### Create a new test file in pinecone-python-client | ||
| In the root of your working directory of the `pinecone-python-client` where you first ran `poetry shell`, add a new file named `hello_virtualenv.py` under the `pinecone` folder. | ||
| In the root of your working directory of the `pinecone-python-client` where you first ran `poetry shell`, add a new file named `hello_virtualenv.py` under the `pinecone` folder. | ||
|
|
||
| In that file write the following: | ||
| In that file write the following: | ||
|
|
||
| ```python | ||
| def hello(): | ||
| print("Hello, from your virtualenv!") | ||
| ``` | ||
| Save the file. | ||
| Save the file. | ||
|
|
||
| #### Create a new test file in your second shell | ||
| This step demonstrates how you can immediately test your latest Pinecone client code from any local Python application or Jupyter Notebook: | ||
| #### Create a new test file in your second shell | ||
| This step demonstrates how you can immediately test your latest Pinecone client code from any local Python application or Jupyter Notebook: | ||
|
|
||
| In your second shell, where you ran `source` to load your virtualenv, create a python file named `test.py` and write the following: | ||
| In your second shell, where you ran `source` to load your virtualenv, create a python file named `test.py` and write the following: | ||
|
|
||
| ```python | ||
| from pinecone import hello_virtualenv | ||
|
|
||
| hello_virtualenv.hello() | ||
| ``` | ||
|
|
||
| Save the file. Run it with your Python binary. Depending on your system, this may either be `python` or `python3`: | ||
| Save the file. Run it with your Python binary. Depending on your system, this may either be `python` or `python3`: | ||
|
|
||
| ```bash | ||
| python3 test.py | ||
| ``` | ||
|
|
||
| You should see the following output: | ||
| You should see the following output: | ||
|
|
||
| ```bash | ||
| ❯ python3 test.py | ||
| Hello, from your virtualenv! | ||
| ``` | ||
|
|
||
| If you experience any issues please [file a new issue](https://github.com/pinecone-io/pinecone-python-client/issues/new). | ||
|
|
||
|
|
||
| ## Consuming API version upgrades | ||
|
|
||
| These instructions can only be followed by Pinecone employees with access to our private APIs repository. | ||
|
|
||
| Prerequisites: | ||
| - You must be an employee with access to private Pinecone repositories | ||
| - You must have [Docker Desktop](https://www.docker.com/products/docker-desktop/) installed and running. Our code generation script uses a dockerized version of the OpenAPI CLI. | ||
| - You must have initialized the git submodules under codegen | ||
|
|
||
| ```sh | ||
| git submodule | ||
| ``` | ||
|
|
||
|
|
||
| To regenerate the generated portions of the client with the latest version of the API specifications, you need to have Docker Desktop running on your local machine. | ||
|
|
||
|
|
||
|
|
||
| ```sh | ||
| ./codegen/ | ||
| ``` | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
1000% nit, but you probs want to put
ruffin backticks, or else it's sorta confusing to read at first glance