{"id":13419395,"url":"https://github.com/pyeve/cerberus","last_synced_at":"2026-10-19T01:03:44.828Z","repository":{"id":4997211,"uuid":"6155413","full_name":"pyeve/cerberus","owner":"pyeve","description":"Lightweight, extensible data validation library for Python","archived":false,"fork":false,"pushed_at":"2026-10-01T19:47:12.000Z","size":2797,"stargazers_count":3280,"open_issues_count":25,"forks_count":249,"subscribers_count":46,"default_branch":"1.3.x","last_synced_at":"2026-10-12T11:56:43.717Z","etag":null,"topics":["data-validation","python"],"latest_commit_sha":null,"homepage":"http://python-cerberus.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"michaeljones/breathe","license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyeve.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null},"funding":{"github":"nicolaiarocci","patreon":"nicolaiarocci"}},"created_at":"2012-10-10T10:03:49.000Z","updated_at":"2026-10-08T11:31:58.000Z","dependencies_parsed_at":"2026-09-27T10:36:48.634Z","dependency_job_id":null,"html_url":"https://github.com/pyeve/cerberus","commit_stats":{"total_commits":940,"total_committers":67,"mean_commits":"14.029850746268657","dds":0.5936170212765958,"last_synced_commit":"b392d3af7f9aa47a71b5c045e1f22a1f9df56521"},"previous_names":["nicolaiarocci/cerberus"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/pyeve/cerberus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyeve%2Fcerberus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyeve%2Fcerberus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyeve%2Fcerberus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyeve%2Fcerberus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyeve","download_url":"https://codeload.github.com/pyeve/cerberus/tar.gz/refs/heads/1.3.x","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyeve%2Fcerberus/sbom","scorecard":{"id":751350,"data":{"date":"2025-08-11","repo":{"name":"github.com/pyeve/cerberus","commit":"7878e60204a4b05d566e5b9a9db0c6bcc9062fe9"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.5,"checks":[{"name":"Code-Review","score":0,"reason":"Found 1/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":2,"reason":"3 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/publish.yml:1","Warn: no topLevel permission defined: .github/workflows/regular-checks.yml:1","Warn: no topLevel permission defined: .github/workflows/tests.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":1,"reason":"dependency not pinned by hash detected -- score normalized to 1","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/pyeve/cerberus/publish.yml/1.3.x?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/pyeve/cerberus/publish.yml/1.3.x?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/regular-checks.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/pyeve/cerberus/regular-checks.yml/1.3.x?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/regular-checks.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/pyeve/cerberus/regular-checks.yml/1.3.x?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/regular-checks.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/pyeve/cerberus/regular-checks.yml/1.3.x?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/regular-checks.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/pyeve/cerberus/regular-checks.yml/1.3.x?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/regular-checks.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/pyeve/cerberus/regular-checks.yml/1.3.x?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/pyeve/cerberus/tests.yml/1.3.x?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/pyeve/cerberus/tests.yml/1.3.x?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/pyeve/cerberus/tests.yml/1.3.x?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/pyeve/cerberus/tests.yml/1.3.x?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:66: update your workflow using https://app.stepsecurity.io/secureworkflow/pyeve/cerberus/tests.yml/1.3.x?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/publish.yml:22","Warn: pipCommand not pinned by hash: .github/workflows/regular-checks.yml:31","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:43","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:52","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:70","Info:   0 out of  11 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   1 out of   6 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: ISC License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/publish.yml:14"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch '1.3.x'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 0 commits out of 3 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T20:28:56.935Z","repository_id":4997211,"created_at":"2025-08-22T20:28:56.936Z","updated_at":"2025-08-22T20:28:56.936Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":343843146,"owners_count":38231102,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-12T02:00:06.297Z","response_time":96,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-validation","python"],"created_at":"2024-07-30T22:01:15.399Z","updated_at":"2026-10-19T01:03:43.023Z","avatar_url":"https://github.com/pyeve.png","language":"Python","funding_links":["https://github.com/sponsors/nicolaiarocci","https://patreon.com/nicolaiarocci"],"categories":["Python","Data Validation","📊 Data Validation \u0026 Quality","Data and Storage","Libraries in Python","数据验证","Data Quality","Data Validation [🔝](#readme)","Awesome Python","🐍 Python","Data validation"],"sub_categories":["Serialization and Formats","Productivity","Data Validation","Useful Python Tools for Data Analysis"],"readme":"Cerberus |latest-version|\n=========================\n|python-support| |black|\n\nCerberus is a lightweight and extensible data validation library for Python.\n\n.. code-block:: python\n\n    \u003e\u003e\u003e v = Validator({'name': {'type': 'string'}})\n    \u003e\u003e\u003e v.validate({'name': 'john doe'})\n    True\n\n\nFeatures\n--------\n\nCerberus provides type checking and other base functionality out of the box and\nis designed to be non-blocking and easily and widely extensible, allowing for\ncustom validation. It has no dependencies, but has the potential to become\nyours.\n\n\nVersioning \u0026 Interpreter support\n--------------------------------\n\nStarting with Cerberus 1.2, it is maintained according to\n`semantic versioning`_. So, a major release sheds off the old and defines a\nspace for the new, minor releases ship further new features and improvements\n(you know the drill, new bugs are inevitable too), and micro releases polish a\ndefinite amount of features to glory.\n\nWe intend to test Cerberus against all CPython interpreters at least until half\na year after their `end of life`_ and against the most recent PyPy interpreter\nas a requirement for a release. If you still need to use it with a potential\nsecurity hole in your setup, it should most probably work with the latest\nminor version branch from the time when the interpreter was still tested.\nSubsequent minor versions have good chances as well. In any case, you are\nadvised to run the contributed test suite on your target system.\n\n\nDocumentation\n-------------\n\nComplete documentation is available at http://docs.python-cerberus.org\n\n\nInstallation\n------------\n\nCerberus is on PyPI_, so all you need to do is:\n\n.. code-block:: console\n\n    $ pip install cerberus\n\n\nTesting\n-------\n\nJust run:\n\n.. code-block:: console\n\n    $ python setup.py test\n\nOr you can use tox to run the tests under all supported Python versions. Make\nsure the required python versions are installed and run:\n\n.. code-block:: console\n\n    $ pip install tox  # first time only\n    $ tox\n\n\nContributing\n------------\n\nPlease see the `Contribution Guidelines`_.\n\n\nCopyright\n---------\n\nCerberus is an open source project by `Nicola Iarocci`_. See the license_ file\nfor more information.\n\n\n.. _Contribution Guidelines: https://github.com/pyeve/cerberus/blob/1.3.x/CONTRIBUTING.rst\n.. _end of life: https://devguide.python.org/#status-of-python-branches\n.. _license: https://github.com/pyeve/cerberus/blob/1.3.x/LICENSE\n.. _Nicola Iarocci: https://nicolaiarocci.com/\n.. _PyPI: https://pypi.python.org/\n.. _semantic versioning: https://semver.org/\n\n.. |black| image:: https://img.shields.io/badge/code%20style-black-000000.svg\n   :alt: Black code style\n   :target: https://black.readthedocs.io/\n.. |latest-version| image:: https://img.shields.io/pypi/v/cerberus.svg\n   :alt: Latest version on PyPI\n   :target: https://pypi.org/project/cerberus\n.. |license| image:: https://img.shields.io/pypi/l/cerberus.svg\n   :alt: Software license\n   :target: https://github.com/pyeve/cerberus/blob/1.3.x/LICENSE\n.. |python-support| image:: https://img.shields.io/pypi/pyversions/cerberus.svg\n   :target: https://pypi.python.org/pypi/cerberus\n   :alt: Python versions\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyeve%2Fcerberus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpyeve%2Fcerberus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyeve%2Fcerberus/lists"}