{"id":15444636,"url":"https://github.com/andreoliwa/python-cdown","last_synced_at":"2025-07-25T03:07:48.170Z","repository":{"id":36989779,"uuid":"324426418","full_name":"andreoliwa/python-cdown","owner":"andreoliwa","description":"CLI interface and Python package to parse and validate CODEOWNERS files used by GitHub and GitLab (not tested with BitBucket yet)","archived":false,"fork":false,"pushed_at":"2025-06-23T19:16:47.000Z","size":286,"stargazers_count":4,"open_issues_count":24,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-23T20:25:40.129Z","etag":null,"topics":["cli","codeowner","codeowners","codeowners-files","codeowners-validator","python","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andreoliwa.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.rst","funding":".github/FUNDING.yml","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.rst","dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["andreoliwa"],"ko_fi":"andreoliwa","liberapay":"andreoliwa","custom":["https://www.paypal.me/andreoliwa","https://www.buymeacoffee.com/andreoliwa"]}},"created_at":"2020-12-25T20:10:27.000Z","updated_at":"2024-03-21T12:33:43.000Z","dependencies_parsed_at":"2023-12-31T15:24:47.288Z","dependency_job_id":"b151db64-c3f7-4b37-98b7-093cccceb67a","html_url":"https://github.com/andreoliwa/python-cdown","commit_stats":{"total_commits":283,"total_committers":6,"mean_commits":"47.166666666666664","dds":"0.10600706713780916","last_synced_commit":"676fb56238a081a1731ca0ddff1e336756f31261"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/andreoliwa/python-cdown","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreoliwa%2Fpython-cdown","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreoliwa%2Fpython-cdown/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreoliwa%2Fpython-cdown/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreoliwa%2Fpython-cdown/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andreoliwa","download_url":"https://codeload.github.com/andreoliwa/python-cdown/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreoliwa%2Fpython-cdown/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266946825,"owners_count":24010622,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-25T02:00:09.625Z","response_time":70,"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":["cli","codeowner","codeowners","codeowners-files","codeowners-validator","python","python3"],"created_at":"2024-10-01T19:42:08.827Z","updated_at":"2025-07-25T03:07:48.135Z","avatar_url":"https://github.com/andreoliwa.png","language":"Python","funding_links":["https://github.com/sponsors/andreoliwa","https://ko-fi.com/andreoliwa","https://liberapay.com/andreoliwa","https://www.paypal.me/andreoliwa","https://www.buymeacoffee.com/andreoliwa"],"categories":[],"sub_categories":[],"readme":"========\nOverview\n========\n\n.. start-badges\n\n.. list-table::\n    :stub-columns: 1\n\n    * - docs\n      - |docs|\n    * - tests\n      - |\n        | |codecov|\n    * - package\n      - | |version| |wheel| |supported-versions| |supported-implementations|\n        | |commits-since|\n.. |docs| image:: https://readthedocs.org/projects/python-cdown/badge/?style=flat\n    :target: https://readthedocs.org/projects/python-cdown\n    :alt: Documentation Status\n\n.. |codecov| image:: https://codecov.io/gh/andreoliwa/python-cdown/branch/master/graphs/badge.svg?branch=master\n    :alt: Coverage Status\n    :target: https://codecov.io/github/andreoliwa/python-cdown\n\n.. |version| image:: https://img.shields.io/pypi/v/cdown.svg\n    :alt: PyPI Package latest release\n    :target: https://pypi.org/project/cdown\n\n.. |wheel| image:: https://img.shields.io/pypi/wheel/cdown.svg\n    :alt: PyPI Wheel\n    :target: https://pypi.org/project/cdown\n\n.. |supported-versions| image:: https://img.shields.io/pypi/pyversions/cdown.svg\n    :alt: Supported versions\n    :target: https://pypi.org/project/cdown\n\n.. |supported-implementations| image:: https://img.shields.io/pypi/implementation/cdown.svg\n    :alt: Supported implementations\n    :target: https://pypi.org/project/cdown\n\n.. |commits-since| image:: https://img.shields.io/github/commits-since/andreoliwa/python-cdown/v0.1.0.svg\n    :alt: Commits since latest release\n    :target: https://github.com/andreoliwa/python-cdown/compare/v0.1.0...master\n\n\n\n.. end-badges\n\n*(this project is a work in progress, still in alpha state)*\n\nCLI interface and Python package to parse and validate CODEOWNERS files used by GitHub and GitLab (not tested with BitBucket yet).\n\nEach CLI command tries to follow Unix's philosophy of `\"Do one thing and do it well\" \u003chttps://en.wikipedia.org/wiki/Unix_philosophy#Do_One_Thing_and_Do_It_Well\u003e`_.\n\nThe commands mimic the interface of well-known tools like `grep \u003chttps://www.man7.org/linux/man-pages/man1/grep.1.html\u003e`_, `ls \u003chttps://www.man7.org/linux/man-pages/man1/ls.1.html\u003e`_, `git ls-files \u003chttps://git-scm.com/docs/git-ls-files\u003e`_.\nThe very name of the project is a reference to `chown \u003chttps://www.man7.org/linux/man-pages/man1/chown.1.html\u003e`_.\n\n\n* Free software: MIT license\n\nInstallation\n============\n\n::\n\n    pip install cdown\n\nYou can also install the in-development version with::\n\n    pip install https://github.com/andreoliwa/python-cdown/archive/master.zip\n\n\nDocumentation\n=============\n\nhttps://python-cdown.readthedocs.io/\n\nMotivation\n==========\n\nWhy build yet another project instead of contributing to an existing one? There are other code owners tools, but none of them had all the features I'd like to use.\n\nBelow are alternatives to ``cdown`` with some of their features.\n\nTo the creators of these tools: thanks for the inspiration!\n\n.. list-table::\n    :stub-columns: 1\n\n    * - Repository\n      - Language\n      - Features\n\n    * - `beaugunderson/codeowners \u003chttps://github.com/beaugunderson/codeowners#cli-usage\u003e`_\n      - JavaScript\n      - - Print files and its owners\n        - List unowned files\n        - Verify users/teams own a specific path\n\n    * - `mszostok/codeowners-validator \u003chttps://github.com/mszostok/codeowners-validator\u003e`_\n      - Go\n      - - Validator\n        - GitHub action\n        - Runs on Docker\n\n    * - `toptal/codeowners-checker \u003chttps://github.com/toptal/codeowners-checker\u003e`_\n      - Ruby\n      - - List all the changes grouped by an owner\n        - Filter changes by owner\n\n    * - `hmarr/codeowners \u003chttps://github.com/hmarr/codeowners\u003e`_\n      - Go\n      - - Homebrew\n        - Filter results by owner\n        - Limit the files the tool looks at\n\n    * - `hairyhenderson/go-codeowners \u003chttps://github.com/hairyhenderson/go-codeowners\u003e`_\n      - Go\n      - - Go package without a CLI interface\n\n    * - `timoschinkel/codeowners \u003chttps://github.com/timoschinkel/codeowners\u003e`_\n      - PHP\n      - - PHP package without a CLI interface\n\n\nDevelopment\n===========\n\nTo run all the tests run::\n\n    tox\n\nNote, to combine the coverage data from all the tox environments run:\n\n.. list-table::\n    :widths: 10 90\n    :stub-columns: 1\n\n    - - Windows\n      - ::\n\n            set PYTEST_ADDOPTS=--cov-append\n            tox\n\n    - - Other\n      - ::\n\n            PYTEST_ADDOPTS=--cov-append tox\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreoliwa%2Fpython-cdown","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandreoliwa%2Fpython-cdown","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreoliwa%2Fpython-cdown/lists"}