{"id":27348,"library":"rigour","title":"Rigour","description":"Financial crime domain data validation and normalization library. Current version 2.0.3, release cadence irregular.","status":"active","version":"2.0.3","language":"python","source_language":"en","source_url":"https://github.com/opensanctions/rigour","tags":["validation","normalization","financial-crime","sanctions","data-quality"],"install":[{"cmd":"pip install rigour","lang":"bash","label":"PyPI"}],"dependencies":[],"imports":[{"wrong":"from rigour.email import validate_email","symbol":"validate_email","correct":"from rigour import validate_email"}],"quickstart":{"code":"from rigour.email import validate_email\nfrom rigour.names import normalise_company_name\n\nresult = validate_email('test@example.com')\nprint(result)  # True\n\nname = normalise_company_name('OpenSanctions GmbH')\nprint(name)  # opensanctions gmbh","lang":"python","description":"Basic usage of email validation and name normalisation."},"warnings":[{"fix":"Use new imports: from rigour.email import validate_email, from rigour.names import normalise_company_name, etc. Check migration guide.","message":"Version 2.0 rewrote the entire API with new module names (e.g., rigour.email, rigour.names) and changed function signatures. All code written for 1.x will break.","severity":"breaking","affected_versions":"1.x"},{"fix":"result = validate_tax_number('DE123456789'); valid = result.is_valid","message":"Function validate_tax_number now returns a ValidationResult object instead of a boolean. Access .is_valid attribute.","severity":"deprecated","affected_versions":">=2.0"},{"fix":"Always pass dates as YYYY-MM-DD or use normalise_date with strict=False for lenient parsing.","message":"Date normalisation expects ISO 8601 strings or specific formats; passing arbitrary strings may raise ValueError or return None.","severity":"gotcha","affected_versions":">=2.0"},{"fix":"Always include country code (e.g., '+49 30 123456') before calling clean_phone.","message":"Phone cleaning requires plus-prefixed numbers (E.164). National numbers without country code will be discarded or raise error.","severity":"gotcha","affected_versions":">=2.0"}],"env_vars":null,"search_vec":"'2.0.3':12 'cadenc':14 'crime':3,20 'current':10 'data':5,23 'data-qu':22 'domain':4 'financi':2,19 'financial-crim':18 'irregular':15 'librari':9 'normal':8,17 'qualiti':24 'releas':13 'rigour':1 'sanction':21 'valid':6,16 'version':11","created_at":"2026-05-01T17:45:47.236187+00:00","updated_at":"2026-05-01T17:45:47.236187+00:00","problems":{"verify_error":"Traceback (most recent call last):\n  File \"<string>\", line 1, in <module>\nImportError: cannot import name 'validate_email' from 'rigour' (/tmp/tmpc_w3eztt/venv/lib/python3.12/site-packages/rigour/__init__.py)"},"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/opensanctions/rigour","docs":"https://rigour.followthemoney.tech/","changelog":null,"pypi":"https://pypi.org/project/rigour/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["data","payments"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"import_fail","verified_at":"2026-07-03","last_verified":"2026-07-03","next_check":"2026-07-10","install_tag":null}}