benrutter/wimsey
benrutter/wimsey has 173 GitHub stars and 2 forks. GitHot measured 0 stars in 24 hours, 0 in 7 days, and 0 in 15 days. Last checked 2026-11-12 17:08 UTC. Last push 2026-10-16.
Easy and flexible data contracts
측정된 스타 증가
- in 24h
- 0
- in 7 days
- 0
- in 15 days
- 0
- in 1 month
- 기록 수집 중
서로 겹치는 기간의 순증가량이며 일별 합계가 아닙니다. 측정값이 없으면 비워 둡니다. 스타는 관심도를 나타내며 품질을 보장하지 않습니다.
README.md
Original🔍 Wimsey
Wimsey is lightweight, flexible and fully open-source data contract library.
- 🐋 Bring your own dataframe library: Built on top of Narwhals so your tests are carried out natively in your own dataframe library (including Pandas, Polars, Pyspark, Dask, DuckDB, CuDF, Rapids, Arrow and Modin)
- 🎍 Bring your own contract format: Write contracts in yaml, json or python - whichever you prefer!
- 🪶 Ultra Lightweight: Built for fast imports and minimal overwhead with only two dependencies (Narwhals and FSSpec)
- 🥔 Simple, easy API: Low mental overheads with two simple functions for testing dataframes, and a simple dataclass for results.
Check out the handy test catalogue and quick start guide
What is a data contract?
As well as being a good buzzword to mention at your next data event, data contracts are a good way of testing data values at boundary points. Ideally, all data would be usable when you recieve it, but you probably already have figured that's not always the case.
A data contract is an expression of what should be true of some data - we might want to check that the only columns that exist are first_name, last_name and rating, or we might want to check that rating is a number less than 10.
Wimsey let's you write contracts in json, yaml or python, here's how the above checks would look in yaml:
- test: columns_should
be:
- first_name
- last_name
- rating
- column: rating
test: max_should
be_less_than_or_equal_to: 10
Wimsey then can execute tests for you in a couple of ways, validate - which will throw an error if tests fail, and otherwise pass back your dataframe - and test, which will give you a detailed run down of individual test success and fails.
Validate is designed to work nicely with polars or pandas pipe methods as a handy guard:
import polars as pl
import wimsey
df = (
pl.read_csv("hopefully_nice_data.csv")
.pipe(wimsey.validate, "tests.json")
.group_by("name").agg(pl.col("value").sum())
)
Test is a single function call, returning a FinalResult data-type:
import pandas as pd
import wimsey
df = pd.read_csv("hopefully_nice_data.csv")
results = wimsey.test(df, "tests.yaml")
if results.success:
print("Yay we have good data! 🥳")
else:
print(f"Oh nooo, something's up! 😭")
print([i for i in results.results if not i.success])
Roadmap, Contributing & Feedback
Wimsey's mirrored on github, but hosted and developed on codeberg. Issues and pull requests are accepted on both.
Focus at the moment is on refining profiling and test generation, if you have tests or feature that would be helpful to you, feel free to reach out!
관련 프로젝트 살펴보기
Asabeneh/30-Days-Of-Python
30 Days of Python 프로그래밍 챌린지는 Python 프로그래밍 언어를 30일 동안 배우기 위한 단계별 가이드입니다. 이 챌린지는 100일 이상 걸릴 수 있습니다. 자신의 속도에 맞춰 진행하세요. 다음 동영상도 도움이 될 수 있습니다: https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw
78,618 스타grafana/grafana
개방적이고 조합 가능한 옵저버빌리티 및 데이터 시각화 플랫폼입니다. Prometheus, Loki, Elasticsearch, InfluxDB, Postgres 등 여러 소스의 메트릭, 로그, 트레이스를 시각화합니다.
77,859 스타redis/redis
실시간 데이터 기반 애플리케이션을 구축하는 개발자에게 Redis는 가장 선호되고, 가장 빠르며, 기능이 가장 풍부한 캐시, 데이터 구조 서버이자 문서 및 벡터 쿼리 엔진입니다.
77,472 스타apache/superset
Apache Superset는 데이터 시각화 및 데이터 탐색 플랫폼입니다.
75,495 스타