Summary
Several functions across src/fromager/ have complex logic but lack docstrings or inline comments, making it harder for new contributors to understand the codebase.
Docstrings needed (12 functions) — complex logic with multiple code paths or non-obvious algorithms:
find_sdist, find_wheel, find_source_dir (finders.py) — multiple naming fallback strategies
get_project_from_pypi (resolver.py) — multi-stage filtering pipeline
_resolve_version_from_git_url (bootstrapper.py) — git URL parsing with ref extraction and clone caching
add_extra_metadata_to_wheels, extract_info_from_wheel_file (wheels.py) — multi-step pipeline, normalization edge case
download_url, prepare_source (sources.py) — retry/temp file handling, polymorphic plugin returns
get_build_backend_hook_caller (dependencies.py) — 3-source env var merge
_update_build_requires (pyproject.py) — normalized-name dedup algorithm
run (external_commands.py) — expand existing minimal docstring
Summary
Several functions across
src/fromager/have complex logic but lack docstrings or inline comments, making it harder for new contributors to understand the codebase.Docstrings needed (12 functions) — complex logic with multiple code paths or non-obvious algorithms:
find_sdist,find_wheel,find_source_dir(finders.py) — multiple naming fallback strategiesget_project_from_pypi(resolver.py) — multi-stage filtering pipeline_resolve_version_from_git_url(bootstrapper.py) — git URL parsing with ref extraction and clone cachingadd_extra_metadata_to_wheels,extract_info_from_wheel_file(wheels.py) — multi-step pipeline, normalization edge casedownload_url,prepare_source(sources.py) — retry/temp file handling, polymorphic plugin returnsget_build_backend_hook_caller(dependencies.py) — 3-source env var merge_update_build_requires(pyproject.py) — normalized-name dedup algorithmrun(external_commands.py) — expand existing minimal docstring