You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Improve AttributeError warnings when using deprecated methods (#291)
## Problem
In v3.0, many methods have moved from the top-level namespace onto a
class instance. We can throw more informative errors to help people
migrate.
## Solution
Add back stub implementations of methods that were removed. When called,
they throw errors with useful documentation.
I simplified the expected args for all methods to `*args, **kwargs`
which should match no matter what combination of arguments the user has
provided.
## Type of Change
- [x] New feature (non-breaking change which adds functionality)
## Test Plan
`poetry run python3` and then try it:
```
poetry run python3
Python 3.9.16 (main, May 2 2023, 18:16:09)
[Clang 14.0.3 (clang-1403.0.22.14.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pinecone
>>> pinecone.list_indexes()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/jhamon/workspace/pinecone-python-client/pinecone/deprecation_warnings.py", line 21, in list_indexes
raise AttributeError(_build_class_migration_message('list_indexes', example))
AttributeError: list_indexes is no longer top-level attribute of the pinecone package.
To use list_indexes, please create a client instance and call the method there instead.
Example:
from pinecone import Pinecone
pc = Pinecone(api_key='YOUR_API_KEY')
index_name = "quickstart" # or your index name
if index_name not in pc.list_indexes().names():
# do something
>>> pinecone.create_index('quickstart', dimension=8, metric='cosine')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/jhamon/workspace/pinecone-python-client/pinecone/deprecation_warnings.py", line 48, in create_index
raise AttributeError(_build_class_migration_message('create_index', example))
AttributeError: create_index is no longer top-level attribute of the pinecone package.
To use create_index, please create a client instance and call the method there instead.
Example:
from pinecone import Pinecone, ServerlessSpec
pc = Pinecone(api_key='YOUR_API_KEY')
pc.create_index(
name='my-index',
dimension=1536,
metric='euclidean',
spec=ServerlessSpec(
cloud='aws',
region='us-west-2'
)
)
>>> pinecone.describe_index('asdf')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/jhamon/workspace/pinecone-python-client/pinecone/deprecation_warnings.py", line 30, in describe_index
raise AttributeError(_build_class_migration_message('describe_index', example))
AttributeError: describe_index is no longer top-level attribute of the pinecone package.
To use describe_index, please create a client instance and call the method there instead.
Example:
from pinecone import Pinecone
pc = Pinecone(api_key='YOUR_API_KEY')
pc.describe_index('my_index')
```
And `pinecone.init()`
```
>>> pinecone.init()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/jhamon/workspace/pinecone-python-client/pinecone/deprecation_warnings.py", line 38, in init
raise AttributeError(msg)
AttributeError: init is no longer a top-level attribute of the pinecone package.
Please create an instance of the Pinecone class instead.
Example:
import os
from pinecone import Pinecone, ServerlessSpec
pc = Pinecone(
api_key=os.environ.get("PINECONE_API_KEY")
)
# Now do stuff
if 'my_index' not in pc.list_indexes().names():
pc.create_index(
name='my_index',
dimension=1536,
metric='euclidean',
spec=ServerlessSpec(
cloud='aws',
region='us-west-2'
)
)
```
0 commit comments