v0.3.0 #39
AivanF
announced in
Announcements
v0.3.0
#39
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
SLayer 0.3 Release Notes
Redesigned MCP capabilities
The MCP server has been substantially reworked.
datasource_summaryis replaced bymodels_summary— a per-datasource brief overview — andinspect_modelnow returns a complete single-model view with sampled dimension values, measure metadata, reachable join fields, and auto-pruned markdown tables. A newhelptool provides contextual explanations of SLayer concepts (queries, transforms, joins, etc.) directly inside the agent conversation. All MCP tools are now fully async, and query output supportsformatparameter ("markdown","json","csv").Async-first architecture
The engine, storage backends, and SQL client are now async-first.
SlayerQueryEngine.execute()isasync def; useexecute_sync()for CLI, notebooks, and scripts. Postgres and MySQL queries use native async drivers (asyncpg,aiomysql) with pooled connections. SQLite and DuckDB fall back toasyncio.to_thread. Storage backends (YAMLStorage,SQLiteStorage) are async, ready for true async implementations like Postgres-backed multi-tenant storage. All tests usepytest-asynciowithasyncio_mode = "auto".Variables in filters
Filters now support
{variable}placeholders, substituted from the query'svariablesdict. This keeps filter templates reusable across different parameter values without string concatenation:"status = '{status}' AND amount > {min}"withvariables={"status": "completed", "min": 100}. Variable names must be alphanumeric, values must be strings or numbers (inserted as-is).{{/}}produce literal braces. Undefined variables raise clear errors.Meta fields on models, measures, and dimensions
Models, dimensions, and measures now have an optional
meta: Dict[str, Any]field for arbitrary user-defined JSON metadata (e.g.,{"owner": "analytics", "pii": true}). Persisted in YAML and SQLite storage, editable via MCPedit_model(passnullto clear), HTTP API, and CLI. The MCP sentinel pattern distinguishes "not provided" from "explicitly clear."Default storage path
slayer serveandslayer mcpnow work with zero configuration. When no--storageflag or$SLAYER_STORAGEis set, SLayer uses a platform-appropriate default:~/.local/share/slayeron Linux (XDG-compliant),~/Library/Application Support/slayeron macOS,%LOCALAPPDATA%\slayeron Windows.dbt Semantic Layer import
SLayer can now import models from a dbt project via
slayer import-dbt. Semantic models and metrics fromdbt_project.ymlare converted into SLayer models with dimensions, measures, and joins. The--include-hidden-modelsflag additionally imports every regular dbt model not wrapped by asemantic_modelas a hidden SLayer model (queryable by name but excluded from discovery endpoints). Requires thedbtextra:pip install motley-slayer[dbt].This discussion was created from the release v0.3.0.
Beta Was this translation helpful? Give feedback.
All reactions