Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
153f143
docs: add settings audit spec (2026-04-15)
discreteds Apr 15, 2026
8532719
docs: add settings audit implementation plan
discreteds Apr 15, 2026
6504f9f
docs(audit): sqlite settings audit
discreteds Apr 15, 2026
49242c3
docs(audit): duckdb settings audit
discreteds Apr 15, 2026
ff6eb51
docs(audit): trino settings audit
discreteds Apr 15, 2026
f2927a6
docs(audit): pyiceberg_rest settings audit
discreteds Apr 15, 2026
310b29b
docs(audit): motherduck settings audit
discreteds Apr 15, 2026
e6bab38
docs(audit): postgresql settings audit
discreteds Apr 15, 2026
c71f1c7
docs(audit): mysql settings audit
discreteds Apr 15, 2026
fa701f7
docs(audit): mssql settings audit
discreteds Apr 15, 2026
7d2df46
docs(audit): snowflake settings audit
discreteds Apr 15, 2026
90c1954
docs(audit): bigquery settings audit
discreteds Apr 15, 2026
befa6e1
docs(audit): redshift settings audit
discreteds Apr 15, 2026
0e250aa
docs(audit): pyspark settings audit
discreteds Apr 15, 2026
544b9ef
docs(audit): fill index summary counts and add cross-cutting findings
discreteds Apr 15, 2026
58fa3ad
docs(design): settings registry redesign spec
discreteds Apr 15, 2026
9c771c6
docs(plan): settings registry implementation plan
discreteds Apr 15, 2026
8386055
feat(settings): add ParameterSpec and BackendDescriptor primitives
discreteds Apr 15, 2026
bdc6a89
refactor(settings): address code review cleanup for Task 1
discreteds Apr 15, 2026
f5be365
feat(settings): add AuthSpec discriminated-union hierarchy
discreteds Apr 15, 2026
63f4cf9
refactor(settings): address code review cleanup for Task 2
discreteds Apr 15, 2026
d884fa9
feat(settings): add default AUTH_TO_DRIVER_KWARGS dispatch map
discreteds Apr 15, 2026
d7bbb43
refactor(settings): address code review cleanup for Task 3
discreteds Apr 15, 2026
f6c55c8
feat(settings): add ConnectionProfile generic base
discreteds Apr 15, 2026
7cf4e84
refactor(settings): address code review cleanup for Task 4
discreteds Apr 15, 2026
9a5ff2e
feat(settings): add backend registry with @register decorator
discreteds Apr 16, 2026
daf73aa
refactor(settings): address code review cleanup for Task 5
discreteds Apr 16, 2026
73ba1c5
test(settings): add parametric descriptor invariants
discreteds Apr 16, 2026
ffa41bf
refactor(settings): address code review cleanup for Task 6
discreteds Apr 16, 2026
00a1a62
refactor(settings): migrate sqlite to descriptor + shell
discreteds Apr 16, 2026
cd5c2e8
refactor(settings): migrate duckdb, fix READ_ONLY default and MEMORY_…
discreteds Apr 16, 2026
fc0a69b
refactor(settings): migrate pyspark, fix PARTITIONS type and spark.* …
discreteds Apr 16, 2026
e9e2a39
refactor(settings): simplify pyspark MODE handling to __setattr__ ove…
discreteds Apr 16, 2026
432a9f7
refactor(settings): migrate motherduck to TokenAuth + descriptor
discreteds Apr 16, 2026
ccc3640
chore(settings): restore plan-verbatim comment on motherduck scheme
discreteds Apr 16, 2026
2c2eaae
refactor(settings): migrate postgresql, fix provider_type and widen l…
discreteds Apr 16, 2026
15bf10c
refactor(settings): migrate mysql with ssl adapter and audit fixes
discreteds Apr 16, 2026
627056d
refactor(settings): migrate trino, wire BasicAuthentication, fix type…
discreteds Apr 16, 2026
d05810f
refactor(settings): migrate mssql with auth dispatch and encryption f…
discreteds Apr 16, 2026
7cf6ed6
refactor(settings): migrate snowflake, fix enum whitespace and sessio…
discreteds Apr 16, 2026
efcde86
refactor(settings): migrate bigquery with SA credentials conversion
discreteds Apr 16, 2026
b7b0ada
refactor(settings): migrate redshift with SSL_MODE enum and widened r…
discreteds Apr 16, 2026
732bf2e
refactor(settings): migrate pyiceberg_rest with s3/sigv4/header families
discreteds Apr 16, 2026
96f8a4b
chore(settings): update __init__ re-exports for new registry shape
discreteds Apr 16, 2026
c4919a7
refactor: migrate consumers to ConnectionProfile.to_driver_kwargs API
discreteds Apr 16, 2026
b53e222
refactor(settings): address code review cleanup for Task 20
discreteds Apr 16, 2026
8a6591a
chore(settings): delete retired BaseDBAuthSettings and exception types
discreteds Apr 16, 2026
9f60d85
docs: update settings usage for registry refactor
discreteds Apr 16, 2026
2ec5079
feat(settings): wire ParameterSpec.validator via AfterValidator
discreteds Apr 16, 2026
c6daf3b
docs(plans): add Phase 2 profiles-migration implementation plan
discreteds Apr 16, 2026
f83c195
fix(trino): remove unused AuthSpec import
discreteds Apr 17, 2026
e4114ad
Merge pull request #74 from mountainash-io/feat/settings-registry
discreteds Apr 17, 2026
f166679
refactor(settings): thin ConnectionProfile + DATABASES_REGISTRY wrapper
discreteds Apr 17, 2026
3b707d4
refactor(settings): rewire imports to mountainash-settings.profiles +…
discreteds Apr 17, 2026
ca61558
chore(settings): add DATABASES_REGISTRY to public re-exports
discreteds Apr 17, 2026
0521ebb
test(settings): switch to shared descriptor_invariants_for helper
discreteds Apr 17, 2026
050c5d2
test(settings): trim tests to data-specific cases; delete duplicates
discreteds Apr 17, 2026
3a14977
docs: update CLAUDE.md settings section for mountainash-settings prom…
discreteds Apr 17, 2026
6d9ec94
Merge pull request #75 from mountainash-io/feat/profiles-migration
discreteds Apr 17, 2026
d2ab50b
refactor(settings): remove PySpark __setattr__ override
discreteds Apr 18, 2026
87564af
chore(settings): remove orphaned templates.py
discreteds Apr 18, 2026
dff2582
tooling-wip: pyright + gitignore + hatch tooling
discreteds Apr 18, 2026
b026b0c
Merge pull request #76 from mountainash-io/chore/legacy-cleanup
discreteds Apr 18, 2026
c95c439
release: 2026.04.1
discreteds Apr 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .claude/worktrees/settings-registry
Submodule settings-registry added at e3837c
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -177,4 +177,5 @@ junit.*
coverage.*

#hiivmind
.hiivmind/*
.hiivmind/github/user.yaml
.benchmarks/
1 change: 1 addition & 0 deletions .hiivmind/github
45 changes: 29 additions & 16 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,17 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
- `CatalogInfo`, `NamespaceInfo`, `TableInfo`, `ColumnInfo` — shared physical metadata dataclasses

3. **Settings** (`src/mountainash_data/core/settings/`)
- Per-dialect pydantic settings (SQLite, DuckDB, PostgreSQL, …)
- Base class: `BaseDBAuthSettings`
- Database-flavored layer over `mountainash-settings`'s `profiles` and
`auth` sub-packages.
- `BackendDescriptor` is a typed `ProfileDescriptor` subclass adding
`default_port` / `connection_string_scheme` / `ibis_dialect` / `rides_on`;
every backend is a two-line shell registered via `@register`.
- `ConnectionProfile` adds `to_driver_kwargs()` and `to_connection_string()`
on top of the generic `DescriptorProfile` base.
- `AuthSpec` subclasses (`PasswordAuth`, `OAuth2Auth`, `IAMAuth`, …) live
upstream in `mountainash_settings.auth` and are re-exported from
`mountainash_data.core.settings` for downstream compatibility.
- Composite driver mappings live in `settings/adapters/<backend>.py`.

4. **Factories** (`src/mountainash_data/core/factories/`)
- `ConnectionFactory` — settings → connection
Expand Down Expand Up @@ -192,9 +201,25 @@ tests/

```python
from mountainash_data import IbisBackend, IcebergBackend
from mountainash_data.core.settings import PostgreSQLAuthSettings
from mountainash_data.core.settings import (
SQLiteAuthSettings,
NoAuth,
PostgreSQLAuthSettings,
PasswordAuth,
)

sqlite = SQLiteAuthSettings(DATABASE=":memory:", auth=NoAuth())
pg = PostgreSQLAuthSettings(
HOST="db.example",
DATABASE="app",
auth=PasswordAuth(username="app", password="s3cret"),
)

kwargs = pg.to_driver_kwargs() # → dict ready for Ibis
url = pg.to_connection_string() # → "postgresql://app:s3cret@db.example:5432/app"
print(pg.provider_type, pg.backend)

# Ibis backend (new-style, direct)
# Ibis backend (direct)
backend = IbisBackend(dialect="sqlite", database=":memory:")
conn = backend.connect()
try:
Expand All @@ -204,18 +229,6 @@ try:
finally:
conn.close()

# Ibis backend (settings-driven, via DatabaseUtils)
from mountainash_data import DatabaseUtils
from mountainash_data.core.settings import SQLiteAuthSettings
from mountainash_settings import SettingsParameters

settings_params = SettingsParameters.create(
settings_class=SQLiteAuthSettings,
kwargs={"DATABASE": ":memory:"}
)
connection = DatabaseUtils.create_connection(settings_params)
ibis_backend = connection.connect()

# Iceberg backend (requires pyiceberg)
ice = IcebergBackend(catalog="rest", uri="http://localhost:8181")
ice_conn = ice.connect()
Expand Down
17 changes: 0 additions & 17 deletions coverage.toml

This file was deleted.

434 changes: 434 additions & 0 deletions docs/superpowers/plans/2026-04-15-settings-audit.md

Large diffs are not rendered by default.

Loading
Loading