# Compatibility ETLPlus documents a narrow, explicit support window. The statements on this page describe the supported release contract for the stable `v1.x` line. ## Python support | Python | Status | Notes | | --- | --- | --- | | 3.13 | Supported | Covered by lint, tests, docs, packaging, and smoke-install CI. | | 3.14 | Supported | Covered by lint and tests in CI. | | < 3.13 | Unsupported | Outside the declared package metadata and release policy. | | >= 3.15 | Not yet declared | Compatibility has not been validated or promised yet. | For response targets, deprecation windows, and maintenance expectations, see the repository support policy in `SUPPORT.md`. ## Platform coverage | Platform | Coverage level | Notes | | --- | --- | --- | | Linux | Full CI path | Lint, tests, docs, build, artifact audit, wheel smoke test, and supported-installer smoke tests run on Ubuntu. | | macOS | Smoke install | Clean package install and and CLI entrypoint/help verification run in CI: `etlplus --version`, `etlplus --help`, `etlplus check --help`, and `etlplus ui --help`. | | Windows | Smoke install | Clean package and CLI entrypoint/help verification run in CI: `etlplus --version`, `etlplus --help`, `etlplus check --help`, and `etlplus ui --help`. | The Linux job remains the primary validation path. macOS and Windows coverage is intended to catch packaging and entrypoint regressions before release. ## Dependency groups | Install target | Command | Intended use | | --- | --- | --- | | Base runtime | `pip install etlplus` | Documented CLI commands, `etlplus.ops`, `etlplus.api`, and implemented built-in file handlers. | | Isolated CLI with pipx | `pipx install etlplus` | Base ETLPlus CLI installed as an isolated command-line application. | | Isolated CLI with uv | `uv tool install etlplus` | Base ETLPlus CLI installed as an isolated command-line application through uv's tool installer. | | Development | `pip install -e ".[dev]"` | Local development, linting, type-checking, tests, and packaging work. | | Docs | `pip install -e ".[docs]"` | Sphinx and Read the Docs-compatible documentation builds. | | File extras | `pip install -e ".[file]"` | Remaining scientific and specialty format dependencies such as `netCDF4`, `pyreadr`, `pyreadstat`, and `xarray`. | | BigQuery connector extra | `pip install -e ".[database-bigquery]"` | Optional BigQuery connector metadata/readiness support via `provider: bigquery` plus `project` and `dataset` fields when no connection string is supplied. | | Snowflake connector extra | `pip install -e ".[database-snowflake]"` | Optional Snowflake connector metadata/readiness support via `provider: snowflake` plus `account`, `database`, and `schema` fields when no connection string is supplied. | | Storage extras | `pip install -e ".[storage]"` | Remote storage backends for `s3://`, `azure-blob://`, `abfs://`, and `hdfs://` locations through `etlplus.storage` and `etlplus.file.File`. | Remote object storage and managed database metadata are first-class stable-line configuration paths. Local filesystem paths, SQLite files, localhost databases, and Docker Compose services are still useful for development and smoke tests, but they should not be treated as the only supported operating model. The broad base runtime is intentional. For the `v1.x` stable line, ETLPlus treats the documented CLI, `etlplus.ops`, `etlplus.api`, and the implemented built-in file handlers as one default supported experience, so their dependencies stay in the base install rather than being split across multiple extras. The `file` extra is reserved for narrower scientific and specialty workflows, and the `storage` extra is reserved for optional remote-storage backends. The `database-bigquery` extra is reserved for optional BigQuery connector metadata and readiness checks rather than the default runtime surface. The `database-snowflake` extra is reserved for optional Snowflake connector metadata and readiness checks rather than the default runtime surface. The installer review keeps that broad base runtime unchanged for `pip`, `pipx`, and `uv tool install`. Splitting the default install into a smaller CLI core plus larger extras would be a future major-version packaging decision because it could change what existing users receive from the documented base install. ## Installer policy - Use `pip install etlplus` when ETLPlus should be available as both a Python package and CLI in the active environment. - Use `pipx install etlplus` for the preferred isolated CLI installation path. - Use `uv tool install etlplus` when uv is the local tool installer. - Conda-forge status: tagged PyPI sdist validation has passed on Linux, macOS, and Windows. Until the feedstock is accepted and published, use the PyPI-based installers above for supported installs. ## Release interpretation - “Supported” means the combination is covered by package metadata and some CI validation. - “Smoke install” means install and CLI entrypoint/help confidence, not a full behavioral test matrix. - File-format coverage still depends on the handler status documented in the file-handler matrix.