{"id":13486507,"url":"https://github.com/roo-oliv/pycollect","last_synced_at":"2026-06-07T14:32:22.220Z","repository":{"id":62579380,"uuid":"199208417","full_name":"roo-oliv/pycollect","owner":"roo-oliv","description":"Utility library to collect valid Python files recursively","archived":false,"fork":false,"pushed_at":"2023-01-11T18:08:14.000Z","size":395,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-17T03:43:28.811Z","etag":null,"topics":["collect","directory-traversal","module","python-files","python-module","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/roo-oliv.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","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},"funding":{"github":"allrod5","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2019-07-27T20:01:26.000Z","updated_at":"2023-01-11T18:08:21.000Z","dependencies_parsed_at":"2023-02-09T04:01:12.331Z","dependency_job_id":null,"html_url":"https://github.com/roo-oliv/pycollect","commit_stats":null,"previous_names":["roo-oliv/pycollect","allrod5/pycollect"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/roo-oliv/pycollect","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roo-oliv%2Fpycollect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roo-oliv%2Fpycollect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roo-oliv%2Fpycollect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roo-oliv%2Fpycollect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/roo-oliv","download_url":"https://codeload.github.com/roo-oliv/pycollect/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roo-oliv%2Fpycollect/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284818572,"owners_count":27068110,"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-11-17T02:00:06.431Z","response_time":55,"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":["collect","directory-traversal","module","python-files","python-module","python3"],"created_at":"2024-07-31T18:00:47.401Z","updated_at":"2025-11-17T03:43:31.790Z","avatar_url":"https://github.com/roo-oliv.png","language":"Python","funding_links":["https://github.com/sponsors/allrod5"],"categories":["Python"],"sub_categories":[],"readme":".. _pycollect:\n\npycollect\n=========\n\n.. start-badges\n\n.. list-table::\n    :stub-columns: 1\n\n    * - license\n      - |license|\n    * - docs\n      - |docs|\n    * - tests\n      - |build| |requires| |coveralls|\n    * - package\n      - |version| |wheel| |supported-versions| |supported-implementations| |platforms|\n.. |docs| image:: https://img.shields.io/badge/docs-GitHub%20Pages-black\n    :target: https://allrod5.github.io/pycollect/\n    :alt: Documentation Status\n\n.. |build| image:: https://github.com/allrod5/pycollect/workflows/build/badge.svg\n    :alt: Build Status\n    :target: https://github.com/allrod5/pycollect/actions\n\n.. |requires| image:: https://requires.io/github/allrod5/pycollect/requirements.svg?branch=master\n    :alt: Requirements Status\n    :target: https://requires.io/github/allrod5/pycollect/requirements/?branch=master\n\n.. |coveralls| image:: https://coveralls.io/repos/allrod5/pycollect/badge.svg?branch=master\u0026service=github\n    :alt: Coverage Status\n    :target: https://coveralls.io/r/allrod5/pycollect\n\n.. |version| image:: https://img.shields.io/pypi/v/pycollect.svg\n    :alt: PyPI Package latest release\n    :target: https://pypi.org/project/pycollect\n\n.. |wheel| image:: https://img.shields.io/pypi/wheel/pycollect.svg\n    :alt: PyPI Wheel\n    :target: https://pypi.org/project/pycollect\n\n.. |supported-versions| image:: https://img.shields.io/pypi/pyversions/pycollect.svg\n    :alt: Supported versions\n    :target: https://pypi.org/project/pycollect\n\n.. |supported-implementations| image:: https://img.shields.io/pypi/implementation/pycollect.svg\n    :alt: Supported implementations\n    :target: https://pypi.org/project/pycollect\n\n.. |license| image:: https://img.shields.io/github/license/allrod5/pycollect\n    :alt: GitHub license\n    :target: https://github.com/allrod5/pycollect/blob/master/LICENSE\n\n.. |platforms| image:: https://img.shields.io/badge/platforms-windows%20%7C%20macos%20%7C%20linux-lightgrey\n    :alt: Supported Platforms\n    :target: https://github.com/allrod5/pycollect/blob/master/.github/workflows/build.yml#L11\n\n\n.. end-badges\n\nUtility library dealing with Python files.\n\n**Features**\n * Collect Python files recursively from a given directory\n * Find the Python module name respective to a Python file\n\nInstallation\n============\n\n.. code-block:: bash\n\n    pip install pycollect\n\n\nBasic Usage\n===========\n\nCollect Python files\n--------------------\n\n.. code-block:: python\n\n    collector = PythonFileCollector()\n    python_files = collector.collect()\n\nWhen no explicit directory is given the parent folder of caller's file will be used.\n\nIt is possible to define custom exclusion patterns. `See the docs for more \u003chttps://allrod5.github.io/pycollect/reference/pycollect.html#pycollect.PythonFileCollector\u003e`__.\n\nGet the module name of a Python file\n------------------------------------\n\n.. code-block:: python\n\n    module_name = find_module_name(filepath)\n\nAs there can be multiple valid module names for a given file, by default the outermost\nmodule name is returned. The inverse behaviour can be enabled with the ``innermost``\nparameter. `See the docs for more \u003chttps://allrod5.github.io/pycollect/reference/pycollect.html#pycollect.find_module_name\u003e`__.\n\nDocumentation\n=============\n\nSee the complete docs at `allrod5.github.io/pycollect \u003chttps://allrod5.github.io/pycollect/\u003e`__.\n\n`Integration tests \u003chttps://github.com/allrod5/pycollect/tree/master/tests/integration\u003e`__\ncan be pretty helpful to understand pycollect usage more in-depth too.\n\nSee also\n--------\n\n* `CONTRIBUTING \u003chttps://allrod5.github.io/pycollect/contributing.html\u003e`__: Bug reports, feature requests, documentation \u0026 pull requests.\n* `CHANGELOG \u003chttps://allrod5.github.io/pycollect/changelog.html\u003e`__: See what's changed in each version.\n* `AUTHORS \u003chttps://allrod5.github.io/pycollect/authors.html\u003e`__: Know who's behind the project.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froo-oliv%2Fpycollect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froo-oliv%2Fpycollect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froo-oliv%2Fpycollect/lists"}