# Community extension coverage DuckPlus ships helpers for high-impact DuckDB community extensions while keeping the API extensible. The goal is to make ``extra_extensions`` opt-ins feel as first-class as built-in readers—installations happen automatically, metadata is queryable, and errors point to actionable next steps. ## Nano-ODBC `DuckCon.load_nano_odbc()` installs the nano-ODBC bundle so you can query remote databases through DuckDB's connector. Relation constructors mirror DuckDB's ``from_odbc`` helpers and validate connection state. Use :meth:`duckplus.relation.Relation.from_odbc_query` for ad-hoc SQL or :meth:`duckplus.relation.Relation.from_odbc_table` for table scans—the helpers accept parameter sequences and provide deterministic error messages when the extension is missing. ```python from duckplus import DuckCon, Relation manager = DuckCon(extra_extensions=("nanodbc",)) with manager: customers = Relation.from_odbc_table( manager, "Driver={SQLite3};Database=/data/crm.sqlite", "customers", ) ``` ## Excel :meth:`Relation.from_excel ` wraps the Excel extension, exposing keyword arguments such as ``sheet``, ``names``, and ``dtype``. DuckPlus installs the extension on demand and surfaces clear errors when the environment is offline. Because the helper understands alias pairs like ``skip``/``skiprows``, you receive immediate feedback if conflicting arguments are supplied. ## Bundled extensions `DuckCon.extensions()` lists installed bundles along with their state so you can confirm availability before executing queries. Helpers in :mod:`duckplus.io` leverage this to load HTTPFS, JSON, and other bundled features transparently. Combine it with ``extra_extensions`` when constructing :class:`DuckCon` to pin the extension set used in production versus local development. DuckPlus 1.3 also includes :mod:`duckplus.extensions` with helpers for auditing bundled extensions. Use :func:`duckplus.extensions.collect_bundled_extension_audit` to gather metadata about the bundled extensions shipped with DuckDB and to record which relation helpers already cover them. The included ``scripts/audit_extensions.py`` command regenerates {doc}`../../extensions_audit` for release notes so coverage gaps are visible during planning.【F:duckplus/extensions.py†L1-L109】【F:scripts/audit_extensions.py†L1-L82】 ## Roadmap The {file}`docs/community_extension_targets.md` file tracks upcoming wrappers for ZIP archives, YAML ingestion, and more. Contributions that add new helpers should prefer extending existing modules rather than rewriting them, following the open/closed principle baked into the package design. If an extension fails to install at runtime, DuckPlus raises a ``RuntimeError`` with the name of the extension, the attempted install path, and a reminder to pre-install it in air-gapped environments.