About¶
Who This Is For¶
The mountainash ecosystem serves several distinct practitioner roles. Your starting point depends on what you're trying to accomplish.
Data Analyst¶
You explore, transform, and analyse data interactively — notebooks, scripts, ad-hoc queries. You want to write expressions once and get results from any backend.
Start with: mountainash + mountainash-data
Your workflow: Connect to any database via mountainash-data, write expressions with Polars-compatible col/lit/when syntax, build pipelines with relation(), get results via .to_polars(), .to_pandas(), or .to_dicts() (18 terminal formats), conform messy data with .conform(spec), validate with data contracts.
Expand to: mountainash-rules for decision logic, mountainash-treespec for nested data flattening.
Data Engineer¶
You build production data pipelines — ingestion, transformation, validation, storage across any backend combination.
Start with: mountainash + mountainash-data + mountainash-settings
Your workflow: Configure with typed settings (YAML/TOML/secrets), connect to databases (23+ dialects, Iceberg), define API endpoints, flatten hierarchical responses, conform to TypeSpec schemas, validate with data contracts, evaluate business rules, store in any backend.
Expand to: mountainash-api-client for API ingestion, mountainash-treespec for format handling, mountainash-rules for business logic, mountainash-transport for cloud storage.
Decision Management Author¶
You define business rules, pricing tables, feature flags, and configuration matrices that evaluate on any backend.
Start with: mountainash-rules + mountainash-data
Your workflow: Define dimensions with match strategies, load rule tables from any database or file, evaluate contexts with explainability, resolve combinatorial problems with the accumulator engine, export to DMN 1.3 for regulatory compliance.
Expand to: mountainash-rules-babel for DMN/CSV format bridging, mountainash-data for storing rules in Snowflake/DuckDB/Iceberg.
Platform / Infrastructure Team¶
You build shared data platform infrastructure — configuration, auth, connectivity, validation, governance.
Start with: mountainash-settings + mountainash-data + mountainash-auth-client
Your workflow: Standardise configuration with typed settings classes, manage credentials via 13 auth methods, connect to all databases, define TypeSpec schemas for physical contracts, add data contracts for logical quality, feed validation results into DQ dashboards, use treespec for regulatory format handling, rules for compliance logic.
Expand to: The full stack — all packages compose.
Integration / ETL Developer¶
You ingest data from REST APIs and hierarchical file formats into databases.
Start with: mountainash-api-client + mountainash-treespec
Your workflow: Declare API endpoints as typed dataclasses (5 lines each), auth via auth-client (OAuth2/PKCE, API keys, etc.), automatic pagination/retry/rate-limiting, flatten nested responses with treespec (JSON, XML, Protobuf, Avro, Pydantic), conform to schemas, validate, store in any database.
Expand to: mountainash-data for database storage, mountainash for validation and conformance.
Installation¶
| Package | Install |
|---|---|
| mountainash | pip install mountainash |
| mountainash-data | pip install mountainash-data (optional: [iceberg]) |
| mountainash-settings | pip install mountainash-settings |
| mountainash-transport | pip install mountainash-transport |
| mountainash-auth-client | pip install mountainash-auth-client (optional: [oauth1]) |
| mountainash-api-client | pip install mountainash-api-client |
| mountainash-treespec | pip install mountainash-treespec (optional: [json], [xml], [protobuf], [pydantic], [avro]) |
| mountainash-rules | pip install mountainash-rules |
| mountainash-rules-babel | pip install mountainash-rules-babel (optional: [jdm], [flagd], [drools]) |
How to Navigate the Manuals¶
The available manuals share the structure below. See the Project Library for current availability; deferred books retain their outlines but are not published.
- Read chapters in order — concepts are introduced in dependency order, so each chapter builds on what came before
- Use the search bar to jump to a specific term or concept
- Try the MicroSims where available — interactive simulations visualise architecture and data flow, but inherited books also contain static diagrams and unimplemented simulation descriptions
- Check the Learning Graph to see how concepts connect and what to read first
- Use the API Reference as a companion while reading — it has the module-level detail
About the Project¶
Mountainash is an open-source Python ecosystem for backend-portable data engineering. It composes established open standards — Ibis, Narwhals, Polars, Frictionless Data, Substrait, Iceberg, DMN, Pydantic — through a shared expression substrate that makes them work together.
- Source code: github.com/mountainash-io/mountainash
- Author: Nathaniel Ramm