Skip to content

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

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
andersou opened this issue May 13, 2025 · 0 comments

Comments

@andersou
Copy link

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/)), 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:

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!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant