Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

duckdb.experimental.spark fails to import without typing_extensions, which is not a runtime dependency

Ouverte Adaptée aux débutants
#653 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
82/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
python
Domaine
backend

Piste de recherche

Les trois importations défectueuses se trouvent dans duckdb/experimental/spark/_globals.py:36, duckdb/experimental/spark/sql/types.py:14 et duckdb/experimental/spark/_typing.py:22. Commence par reproduire le problème dans un venv propre contenant uniquement duckdb et numpy, puis importe duckdb.experimental.spark.sql. Compare avec duckdb/polars_io.py pour le motif de garde existant. C'est terminé lorsque ces modules s'importent avec uniquement le module typing de la bibliothèque standard et que l'import spark réussit sans typing_extensions installé.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

What happens?

duckdb.experimental.spark imports typing_extensions at module import time, but typing-extensions is only listed in the stubdeps and test dependency groups in pyproject.toml, not as a runtime dependency and not in the all extra. In a clean environment with just duckdb and numpy (the dependency the all extra comment names for the spark module), importing the spark API fails.

The three imports are:

  • duckdb/experimental/spark/_globals.py:36 — from typing_extensions import Self
  • duckdb/experimental/spark/sql/types.py:14 — from typing_extensions import Self
  • duckdb/experimental/spark/_typing.py:22 — from typing_extensions import Protocol, Self

Since the package requires Python >= 3.11, typing.Self and typing.Protocol are available from the standard library, so these can simply be from typing import Self / from typing import Protocol, Self. duckdb/polars_io.py and duckdb/experimental/spark/sql/_typing.py already guard their typing_extensions usage. The failure is masked when duckdb[all] is installed because typing_extensions arrives transitively through pandas/pyarrow.

Happy to send a PR if the from typing import ... change is the preferred fix.

To Reproduce
python -m venv v && . v/bin/activate
pip install --pre duckdb numpy
python -c "from duckdb.experimental.spark.sql import SparkSession"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File ".../site-packages/duckdb/experimental/spark/__init__.py", line ...
  File ".../site-packages/duckdb/experimental/spark/_globals.py", line 36, in <module>
    from typing_extensions import Self
ModuleNotFoundError: No module named 'typing_extensions'

Same result on the 1.5.6 release.

OS:

macOS 15 (aarch64)

DuckDB Package Version:

2.0.0.dev2610011535 (nightly); also 1.5.6

Python Version:

3.12

Full Name:

Joaquin Hui Gomez

Affiliation:

Independent contributor

What is the latest build you tested with? If possible, we recommend testing with the latest nightly build.

I have tested with a nightly build

Did you include all relevant data sets for reproducing the issue?

Not applicable - the reproduction does not require a data set

Did you include all code required to reproduce the issue?
  • Yes, I have
Did you include all relevant configuration (e.g., CPU architecture, Python version, Linux distribution) to reproduce the issue?
  • Yes, I have
Langage dominant
Python
Étoiles
191
Forks
120
Merge moyen
14 h 1 min
PR mergées (30 j)
23

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de duckdb/duckdb-python

Toutes les issues de duckdb/duckdb-python

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.