influxdata / influxdata/influxdb-client-python

Public symbols not properly exported with `py.typed` present — triggers Pylance/Pyright errors

Ouverte
#694 0 commentaires 6 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Python
Étoiles
793
Forks
186
Merge moyen
3 h 2 min
PR mergées (30 j)
1

Description

Hi team,

Thanks for maintaining this package — it's a great tool for working with InfluxDB.

I'm opening this issue to report a problem that affects type checkers and IDEs (like Pyright, Pylance, and mypy) due to the presence of the `py.typed` file in the `influxdb-client-python` package.

Since the package declares itself as typed (via `py.typed`, per [[PEP 561](https://peps.python.org/pep-0561/)](https://peps.python.org/pep-0561/)), tools like **Pyright** and **Pylance** apply stricter rules around public API exposure. Specifically, **public symbols must be explicitly exported** using either:

* a `__all__` list in `__init__.py`, or
* `.pyi` stub files.

Currently, this is not the case for the main client class. When importing `InfluxDBClient` from the top-level module as documented:

```python
from influxdb_client import InfluxDBClient
```

Pylance (and Pyright) raises the following error:

```
"InfluxDBClient" is not exported from module "influxdb_client"
Import from "influxdb_client.client.influxdb_client" instead
Pylance: reportPrivateImportUsage
```

This is confusing to users and suggests that the public API is not properly defined.

### Suggested solutions

To resolve this and ensure compatibility with type checkers, here are a few possible approaches:

1. **Add `__all__` to `influxdb_client/__init__.py`** to explicitly define the intended public interface.
2. **Provide proper `.pyi` stub files** that describe the public API.
3. If full typing support is not maintained, **consider removing the `py.typed` file** to avoid stricter validation.

Improving this would help developers relying on static analysis and IDE support, and reduce confusion about which imports are officially supported.

Thanks again for your work and for considering this issue!

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez par inspecter influxdb_client/__init__.py et le marqueur py.typed du package, puis reproduisez l’import documenté `from influxdb_client import InfluxDBClient` avec Pyright ou Pylance. Déterminez les exports publics prévus et vérifiez que l’import au niveau supérieur ne produit plus le diagnostic d’import privé signalé.

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

Évaluation

Stack technique
python
Domaine
api
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

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