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
{{ message }}
Repository navigation
Clean install fails to import on Python 3.13+/3.14: typing_extensions is used but never declared #690
python3.14 -m venv v && v/bin/pip install pinecone==9.1.0
v/bin/python -c "import pinecone; from pinecone import Pinecone; pinecone.Pinecone"# ModuleNotFoundError: No module named 'typing_extensions'# (raised from pinecone/__init__.py __getattr__ -> importlib.import_module)
Also reproduces on a clean Python 3.13 environment.
Root cause
pinecone/_internal/indexes_helpers.py does:
fromtyping_extensionsimportNotRequired
but typing_extensions is not in [project] dependencies (only httpx[http2], msgspec, orjson).
It has been working by accident:
httpx → anyio declares typing_extensions; python_version < "3.13", so on ≤3.12 the module is present transitively. On 3.13+ that marker no longer applies and clean installs break at import time.
Dev/CI environments always have it via mypy, and the unit-test matrix in on-push.yml caps at 3.13 — so neither local dev nor CI could see it.
Proposed fix
NotRequired is in stdlib typing since 3.11 and requires-python is >=3.10, so:
Version-gate the import (typing on 3.11+, typing_extensions on 3.10).
Declare the real dependency for the remaining case: typing_extensions; python_version < "3.11".
Add 3.14 to the unit-test matrix, and/or a bare-venv "install wheel, import pinecone" smoke on the newest Python, so undeclared imports can't hide behind dev dependencies again.
How we found it
Cold-agent audit for an upcoming blog post: agents in a bare environment installing pinecone from PyPI on Python 3.14 hit this on their first import in 2 of 2 SDK-path trials (they recovered by pip install typing_extensions, which a human user may not think to do).
I checked current main before making changes and found this is already fixed: the runtime no longer imports typing_extensions, Python 3.14 is in the unit-test matrix, and tests/unit/tooling/test_declared_dependencies.py plus the wheel-only install job now guard the undeclared-dependency/public-import failure. I'm stepping back because there is no remaining patch to submit.
Activity
nightcityblade commentedon Oct 11, 2026
Hi, I'd like to work on this. I'll submit a PR shortly.
nightcityblade commentedon Oct 11, 2026
I checked current main before making changes and found this is already fixed: the runtime no longer imports typing_extensions, Python 3.14 is in the unit-test matrix, and tests/unit/tooling/test_declared_dependencies.py plus the wheel-only install job now guard the undeclared-dependency/public-import failure. I'm stepping back because there is no remaining patch to submit.