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

Open
#694 0 comments 6 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
45/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
python
Domain
api

Research direction

Start by inspecting influxdb_client/init.py and the package's py.typed marker, then reproduce the documented from influxdb_client import InfluxDBClient import with Pyright or Pylance. Determine the intended public exports and verify that the top-level import no longer produces the reported private-import diagnostic.

Written by the indexing model from the issue text.

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

Dominant language
Python
Stars
792
Forks
186
Avg merge
3h 2m
Merged PRs (30d)
1

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from influxdata/influxdb-client-python

All issues in influxdata/influxdb-client-python

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.