Metadata-Version: 2.4
Name: driftbrake
Version: 0.0.2
Summary: Detect, classify, and block schema drift in PostgreSQL before your pipelines break
Project-URL: Homepage, https://github.com/yurivski/driftbrake
Project-URL: Repository, https://github.com/yurivski/driftbrake
Project-URL: Issues, https://github.com/yurivski/driftbrake/issues
Project-URL: Changelog, https://github.com/yurivski/driftbrake/blob/main/CHANGELOG.md
Author-email: Yuri Pontes <yurilbrok23@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: contract-testing,data-engineering,database,postgresql,schema
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Database
Classifier: Topic :: Software Development :: Quality Assurance
Requires-Python: >=3.10
Requires-Dist: jinja2>=3.0
Requires-Dist: python-dotenv>=1.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: rich>=13.0
Requires-Dist: sqlalchemy<3.0,>=2.0
Requires-Dist: typer>=0.9
Provides-Extra: dev
Requires-Dist: build; extra == 'dev'
Requires-Dist: mypy; extra == 'dev'
Requires-Dist: pytest-cov; extra == 'dev'
Requires-Dist: pytest>=7.0; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Requires-Dist: twine; extra == 'dev'
Provides-Extra: postgres
Requires-Dist: psycopg2-binary>=2.9; extra == 'postgres'
Description-Content-Type: text/markdown

```text
DriftBrake
==========

DriftBrake is a Python tool that validates schema contracts before data pipelines run.

It reads the current PostgreSQL schema automatically, compares it against a versioned
contract, classifies changes by impact (BREAKING, WARNING, SAFE), and blocks pipelines
when incompatible changes are detected, before they cause failures in production.


The tool
========

  DriftBrake is not a migration tool. It does not apply changes to the database and does
  not generate SQL scripts.

  It runs BEFORE pipelines, verifying that the actual database still respects the
  contract expected by its data consumers.


Example
=======

  Data pipelines fail silently when the database schema changes without warning:

  - column removed or renamed
  - data type altered
  - NOT NULL added without a default
  - foreign key modified

  This tool runs an automatic validation before the pipeline starts and blocks the
  execution if the database is no longer compatible with the expected contract.

  Usage:

    driftbrake init     # creates the schema.lock.json contract
    driftbrake check    # checks whether the database has changed
    driftbrake diff     # compares two states without touching the contract


Documentation
=============

  - DOCUMENTATION.md - https://github.com/yurivski/driftbrake/blob/main/DOCUMENTATION.md
  - CHANGELOG.md - https://github.com/yurivski/driftbrake/blob/main/CHANGELOG.md
  - YML file - https://github.com/yurivski/driftbrake/blob/main/driftbrake.example.yml
```