I have made a Python library whose tree directory structure looks like
lorentz_enrichment
├── __init__.py
│ └── lorentz_enricher.cpython-312.pyc
├── configs
│ ├── __init__.py
│ │ ├── logger.cpython-312.pyc
│ │ ├── s3.cpython-312.pyc
│ │ ├── settings.cpython-312.pyc
│ │ └── tqdm_handler.cpython-312.pyc
│ ├── logger.py
│ ├── s3.py
│ ├── settings.py
│ └── tqdm_handler.py
├── db
│ ├── __init__.py
...
├── lorentz_enricher.py
├── main.py
...
├── py.typed
...
32 directories, 157 files
This is what my __init__.py contains:
import logging
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from .configs.settings import LorentzEnricherSettingsProvider
from .db.mongo.claim_rules_repository import ClaimRulesRepository
from .db.mongo.lorentz_claims_repository import LorentzClaimsRepository
from .db.mongo.mongo_base_repository import MongoBaseRepository
from .db.mongo.queue_messages_repository import QueueMessagesRepository
...
from .configs.settings import LorentzEnricherSettingsProvider
from .db.mongo.claim_rules_repository import ClaimRulesRepository
from .db.mongo.lorentz_claims_repository import LorentzClaimsRepository
from .db.mongo.mongo_base_repository import MongoBaseRepository
from .db.mongo.queue_messages_repository import QueueMessagesRepository
...
logging.getLogger(__name__).addHandler(logging.NullHandler())
__all__ = [
'LorentzEnricher',
'LorentzEnricherSettingsProvider',
...
]
def __dir__() -> list[str]:
return list(__all__)
Everything under TYPE_CHECKING is imported outside too.
And this is my pyproject.toml:
[tool.poetry]
name = "lorentz-enrichment"
version = "0.27.0-b5"
description = "Tools to enrich Lorentz claims with meteorological data"
authors = ["asant <***@***.eu>"]
readme = "README.md"
packages = [{ include = "lorentz_enrichment" }]
[tool.poetry.dependencies]
python = "^3.12"
...
[tool.poetry.group.dev.dependencies]
black = "24.10.0"
ruff = "0.11.11"
...
[tool.mypy]
exclude = [".venv"]
ignore_missing_imports = true
enable_error_code = "possibly-undefined"
disable_error_code = ["import-untyped", "override"]
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
In my microservice the imports like from lorentz_enrichment import LorentzEnricher works correctly, however when in my code I type some classes like LorentzEnricher() without importing it first, VS Code won't suggest the import like it does for pydantic BaseModel for example.
What am I missing here?