Import rules
Import order
Groups separated by blank line:
- stdlib (
import os,from typing import ...) - third-party (
import pendulum,import semver) - local dlt (
from dlt.common import ...) - (tests only) test utilities (
from tests.utils import ...)
- Stdlib imports are ALWAYS at module level -- never inline in functions. This includes
contextlib,io,warnings,sys,os,re, etc. - No relative imports.
Logging
from dlt.common import logger, then logger.info(...) -- never import logging directly (except in logger.py itself or runtime infrastructure).
TYPE_CHECKING imports
- Optional deps for annotations only:
if TYPE_CHECKING: from X import Ywithelse: Y = Any - Destination factories: client class under
TYPE_CHECKING, actual import deferred to runtime method
Optional dependencies
When importing pyarrow, pandas, numpy, pydantic, sqlalchemy, ibis, deltalake, pyiceberg: See common-libs.md