This release is a pre-release and may not be stable for production use.
det — Data Engineering Toolkit
by det Labs
A modular, Python-first data engineering framework built by det Labs for modern analytical workflows.
Current Status: Version 0.1.0 (Catalog MVP Released)
det (developed by det Labs) has completed its Version 0.1.0 milestone with the release of the Catalog Module (det.catalog):
- Concurrency-safe, atomic YAML metadata persistence with file locks.
- Automated schema discovery for Parquet, CSV, TSV, JSON, NDJSON, Excel, and directory datasets using Polars and PyArrow.
- Leverages Python 3.15 stable native
lazy importsyntax for instantaneous engine load times. - Full Python programmatic Command API (
CatalogService). - Interactive Local Browser Web GUI with vertical category explorer, draggable resizer, quick circular action buttons, Discover Schema modal, inline column description editing, and a 3-way theme switcher (Light / Dark / Auto System).
- Typer CLI (
det catalog ...anddet-gui).
Architectural Vision & Module Roadmap
det is built from the ground up by det Labs to be modular, extensible, and Python-native:
┌─────────────────────────────────────────────────────────────┐
│ User Interfaces │
│ CLI (`det`) │ Web GUI (`det-gui`) │ API │
└──────────────┬──────────────────┬──────────────────┬────────┘
│ │ │
┌──────────────▼──────────────────▼──────────────────▼────────┐
│ det Core Modules (det Labs) │
│ │
│ [ Released v0.1 ] │
│ ├── det.catalog Metadata, schemas, YAML store & GUI │
│ │
│ [ Planned Roadmap ] │
│ ├── det.engine Execution abstraction (DuckDB, Polars) │
│ ├── det.pipeline DAG orchestration & SQL/Python models │
│ ├── det.quality Schema contracts, profiling & tests │
│ ├── det.lineage Table & column-level dependency graphs │
│ └── det.connectors Ingestion & sync (Iceberg, Delta, S3) │
└─────────────────────────────────────────────────────────────┘
Module Roadmap
| Module | Purpose | Status |
|---|---|---|
det.catalog |
Dataset discovery, typed schema inference, categories/namespaces, and visual catalog manager | Released in v0.1.0 |
det.engine |
Unified query execution interface abstracting Polars, DuckDB, and Arrow in-memory compute | Planned (v0.2) |
det.pipeline |
Pipeline DAG execution, dbt-style transforms in SQL & Python, incremental materialization | Planned (v0.3) |
det.quality |
Data validation checks, statistical profiling, anomaly detection, and schema contracts | Planned (v0.4) |
det.lineage |
Column-level and dataset-level upstream/downstream lineage graphs | Planned (v0.5) |
det.connectors |
Multi-source extractors and destination sinks (S3, GCS, PostgreSQL, Snowflake, Iceberg, Delta) | Planned (v0.6) |
Quickstart
Prerequisites
- Python:
>= 3.15(Stable released October 9, 2026)
Installation
From PyPI:
pip install det-core
Or from source:
# Clone the repository
git clone https://github.com/det-Labs/det.git
cd det
# Create virtual environment with Python 3.15
py -3.15 -m venv .venv
.venv\Scripts\activate # On Windows
# source .venv/bin/activate # On Linux/macOS
# Install in editable mode with development tools
pip install -e ".[dev]"
# Verify test suite
pytest
1. Launch the Catalog Web GUI
Experience the interactive visual catalog manager directly in your local browser:
det-gui
Navigate to http://127.0.0.1:8501:
- Group datasets into categories / namespaces.
- Point to local files or folders and click Discover Schema to auto-infer columns and types.
- Drag the sidebar border to resize the explorer bar manually (double-click to reset).
- Switch themes between Light, Dark, or Auto (System Default).
- Edit column descriptions inline by clicking on them.
- Switch between different YAML catalog files or create brand new catalogs.
2. Using the CLI
# View system & version info
det version
det info
# Scan a dataset to inspect its inferred schema without registering
det catalog scan sample_data/orders.parquet
# List all registered tables in active catalog
det catalog list
# Set a catalog file as the persistent default
det catalog set-default catalogs/main.yaml
3. Programmatic Python API
from det.catalog import CatalogService, DatasetMetadata
# Connect to catalog
service = CatalogService("catalogs/main.yaml")
# Discover schema from a Parquet or CSV file
scan = service.scan_path("data/customers.parquet")
# Register into catalog
service.register_dataset(DatasetMetadata(
id="crm.customers",
name="customers",
namespace="crm",
format="parquet",
location="data/customers.parquet",
description="Customer master records",
columns=scan.columns,
row_count=scan.row_count,
))
# Retrieve and inspect
dataset = service.get_dataset("crm.customers")
print(f"Table {dataset.name} has {len(dataset.columns)} columns and {dataset.row_count} rows.")
Testing & Quality
All code adheres to strict standards:
- PEP 257 docstrings on all public functions, classes, and methods.
- Explicit type annotations.
- Python 3.15
lazy importintegration. - Fast, automated pytest test suite:
pytest -v
ruff check .
Publishing a Release
Releases are published to PyPI only after the package passes tests and the
pypi GitHub Environment deployment is approved. To release:
- Update the version in
pyproject.tomlandsrc/det/__init__.py. - Push the changes to
mainand create a GitHub Release with a matching tag (for example,v0.1.0a2). - After the workflow builds and tests the release, approve its deployment to
the
pypienvironment in GitHub Actions. The workflow then publishes the distributions using PyPI Trusted Publishing (OIDC).
The pypi environment and the matching Trusted Publisher must be configured
once in GitHub and PyPI, respectively.
License
Distributed under the Apache License 2.0. Copyright (c) 2026 det Labs. See LICENSE for details.
Metadata
Release files for det-core 0.1.1a2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| det_core-0.1.1a2.tar.gz | 130.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| det_core-0.1.1a2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 251.1 kB
Release files / det_core-0.1.1a2.tar.gz
| Download URL | det_core-0.1.1a2.tar.gz |
|---|---|
| Size | 130.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
391a3b871a93204ee62674a828914a33cc6058db3e6a314f1fa9e83441382d6c
|
|
BLAKE2b-256 checksum How to use checksums |
6df7f0aa84eb2451d8e2dfbaef920d8f031f3715761f2beaceff6b474bc4a209
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / det_core-0.1.1a2-py3-none-any.whl
| Download URL | det_core-0.1.1a2-py3-none-any.whl |
|---|---|
| Size | 120.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9f26ed2823a49c37100113d6e249ef89b639b97e5239bc0b90d391960a31c0ed
|
|
BLAKE2b-256 checksum How to use checksums |
279d52f78ab35bcfb77f2aae0ec34f69e80b20d8202fb4bf60db988cd6e1b0bc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency log