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'
)
)
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
Test Plan
poetry run python3
and then try it:And
pinecone.init()