{"id":23474,"library":"cuallee","title":"Cuallee","description":"Cuallee is a Python library for data validation on DataFrame APIs including Snowflake/Snowpark, Apache PySpark, and Pandas. It provides declarative check rules to validate data quality. Current version is 0.15.4, requiring Python >=3.10. Active development with frequent releases.","status":"active","version":"0.15.4","language":"python","source_language":"en","source_url":"https://github.com/canimus/cuallee","tags":["data-quality","validation","snowpark","pyspark","pandas","duckdb"],"install":[{"cmd":"pip install cuallee","lang":"bash","label":"pip install"}],"dependencies":[],"imports":[{"note":"","wrong":"","symbol":"Check","correct":"from cuallee import Check"},{"note":"","wrong":"","symbol":"CheckLevel","correct":"from cuallee import CheckLevel"}],"quickstart":{"code":"import pandas as pd\nfrom cuallee import Check, CheckLevel\n\n# Create a sample DataFrame\ndf = pd.DataFrame({'id': [1, 2, 3], 'value': [10, 20, 30]})\n\n# Define check rules\ncheck = Check(CheckLevel.WARNING, 'my_check')\ncheck.is_complete('id')\ncheck.is_unique('id')\ncheck.is_greater_than('value', 5)\n\n# Validate and get results\nresults = check.validate(df)\nprint(results)\n\n# Use ok() to check if all passed\nif check.ok(df):\n    print(\"All checks passed!\")\nelse:\n    print(\"Some checks failed.\")","lang":"python","description":"Basic usage: create a Check, add rules, validate a DataFrame, and check pass/fail."},"warnings":[{"fix":"Store validation results with `result = check.validate(df)`, then use `result.status[result.status == 'PASS'].all()` or similar.","message":"Check.ok() method requires recomputing validation; prefer storing results if you need both results and pass/fail.","severity":"gotcha","affected_versions":">=0.15.0"},{"fix":"Use `duckdb.register('my_view', relation)` and then pass the registered name or the connection's table.","message":"DuckDB relation objects must be registered before passing to cuallee, otherwise error: 'DuckDbPyRelation' object has no attribute 'columns'.","severity":"gotcha","affected_versions":">=0.15.0"},{"fix":"Upgrade Python to 3.10 or higher.","message":"Python 3.9 support dropped, requires Python >=3.10 as of version 0.14.1.","severity":"breaking","affected_versions":">=0.14.1"}],"env_vars":null,"search_vec":"'0.15.4':31 '3.10':34 'activ':35 'apach':15 'api':12 'check':22 'cualle':1,2 'current':28 'data':8,26,41 'data-qu':40 'datafram':11 'declar':21 'develop':36 'duckdb':47 'frequent':38 'includ':13 'librari':6 'panda':18,46 'provid':20 'pyspark':16,45 'python':5,33 'qualiti':27,42 'releas':39 'requir':32 'rule':23 'snowflake/snowpark':14 'snowpark':44 'valid':9,25,43 'version':29","created_at":"2026-05-01T08:07:57.847541+00:00","updated_at":"2026-05-01T08:07:57.847541+00:00","problems":[{"fix":"Register the relation with DuckDB before passing: `duckdb.register('temp', relation)` then use the registered name or a connection.","cause":"Passing a DuckDB relation object directly without registering it first.","error":"AttributeError: 'DuckDbPyRelation' object has no attribute 'columns'"},{"fix":"Run `pip install cuallee`.","cause":"Forgetting to install the library.","error":"ModuleNotFoundError: No module named 'cuallee'"},{"fix":"Remove 'verbose' from validate() call; use `print(results)` instead.","cause":"Using old API that expected 'verbose' parameter; removed in newer versions.","error":"TypeError: Check.validate() got an unexpected keyword argument 'verbose'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"0.15.4","cli_name":"","cli_version":null,"type":"library","homepage":"https://cuallee.com","github":"https://github.com/canimus/cuallee","docs":null,"changelog":null,"pypi":"https://pypi.org/project/cuallee/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["data","testing"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-29","last_verified":"2026-06-29","next_check":"2026-07-29","install_tag":null}}