Ownership is measured by how many commits each author made to each file in the current tree. It highlights bus-factor risk (files only one person has ever touched) and where knowledge is concentrated. The bus factor is the smallest number of people who are, between them, primary owner of more than half of the files.
Files only one author has ever changed. The more a file has changed, the more knowledge is at risk if that person leaves.
| File | Sole owner | Commits |
|---|---|---|
| pandas/tests/tslibs/test_np_datetime.py | jbrockmendel | 12 |
| pandas/tests/indexes/categorical/test_fillna.py | jbrockmendel | 9 |
| pandas/tests/arrays/timedeltas/test_constructors.py | jbrockmendel | 7 |
| pandas/_libs/tslibs/parsing.pxd | jbrockmendel | 6 |
| pandas/tests/groupby/test_sparse.py | jbrockmendel | 5 |
| pandas/tests/indexes/datetimes/methods/test_delete.py | jbrockmendel | 5 |
| pandas/tests/indexes/datetimes/methods/test_repeat.py | jbrockmendel | 5 |
| pandas/io/formats/templates/latex_longtable.tpl | JHM Darbyshire | 5 |
| pandas/io/formats/templates/html_table.tpl | JHM Darbyshire | 5 |
| pandas/tests/indexes/datetimes/methods/test_unique.py | jbrockmendel | 4 |
| File | Sole owner | Commits |
|---|---|---|
| pandas/tests/tslibs/test_np_datetime.py | jbrockmendel | 12 |
| pandas/tests/indexes/categorical/test_fillna.py | jbrockmendel | 9 |
| pandas/tests/arrays/timedeltas/test_constructors.py | jbrockmendel | 7 |
| pandas/_libs/tslibs/parsing.pxd | jbrockmendel | 6 |
| pandas/tests/groupby/test_sparse.py | jbrockmendel | 5 |
| pandas/tests/indexes/datetimes/methods/test_delete.py | jbrockmendel | 5 |
| pandas/tests/indexes/datetimes/methods/test_repeat.py | jbrockmendel | 5 |
| pandas/io/formats/templates/latex_longtable.tpl | JHM Darbyshire | 5 |
| pandas/io/formats/templates/html_table.tpl | JHM Darbyshire | 5 |
| pandas/tests/indexes/datetimes/methods/test_unique.py | jbrockmendel | 4 |
| pandas/_libs/tslibs/base.pxd | jbrockmendel | 4 |
| pandas/_libs/tslibs/base.pyx | jbrockmendel | 4 |
| pandas/tests/apply/test_series_apply_relabeling.py | Richard Shadrach | 4 |
| pandas/io/formats/templates/latex_table.tpl | JHM Darbyshire | 4 |
| pandas/io/formats/templates/latex.tpl | JHM Darbyshire | 4 |
| pandas/tests/scalar/interval/test_overlaps.py | jbrockmendel | 3 |
| pandas/tests/frame/methods/test_infer_objects.py | jbrockmendel | 3 |
| pandas/tests/indexes/categorical/test_append.py | jbrockmendel | 3 |
| pandas/tests/indexes/datetimes/methods/test_to_julian_date.py | jbrockmendel | 3 |
| pandas/tests/indexes/timedeltas/methods/test_resolution.py | jbrockmendel | 3 |
| pandas/tests/scalar/timedelta/methods/test_as_unit.py | jbrockmendel | 3 |
| pandas/tests/scalar/timestamp/methods/test_to_julian_date.py | jbrockmendel | 3 |
| pandas/tests/scalar/timestamp/methods/test_tz_convert.py | jbrockmendel | 3 |
| pandas/tests/frame/methods/test_combine.py | jbrockmendel | 3 |
| pandas/tests/arrays/floating/test_contains.py | jbrockmendel | 3 |
| scripts/issue_assignment/messages.py | Richard Shadrach | 3 |
| .github/workflows/pr-issue-gate.yml | Richard Shadrach | 3 |
| scripts/issue_assignment/client.py | Richard Shadrach | 3 |
| scripts/issue_assignment/core.py | Richard Shadrach | 3 |
| doc/source/getting_started/comparison/includes/length.rst | Aidan Feldman | 3 |
| doc/source/getting_started/comparison/includes/sorting.rst | Aidan Feldman | 3 |
| doc/source/development/copy_on_write.rst | Patrick Hoefler | 3 |
| web/pandas/community/blog/index.html | Marc Garcia | 3 |
| pandas/io/formats/templates/html_style.tpl | JHM Darbyshire | 3 |
| pandas/tests/arrays/interval/test_formats.py | jbrockmendel | 2 |
| pandas/_libs/_ujson.pyi | jbrockmendel | 2 |
| pandas/tests/arithmetic/test_bool.py | jbrockmendel | 2 |
| pandas/tests/construction/test_extract_array.py | jbrockmendel | 2 |
| pandas/tests/frame/methods/test_swaplevel.py | jbrockmendel | 2 |
| pandas/tests/indexes/period/methods/test_insert.py | jbrockmendel | 2 |
| pandas/tests/indexes/period/methods/test_repeat.py | jbrockmendel | 2 |
| pandas/tests/indexes/timedeltas/methods/test_repeat.py | jbrockmendel | 2 |
| pandas/tests/scalar/interval/test_constructors.py | jbrockmendel | 2 |
| pandas/tests/scalar/interval/test_contains.py | jbrockmendel | 2 |
| pandas/tests/scalar/interval/test_formats.py | jbrockmendel | 2 |
| pandas/tests/scalar/timestamp/methods/test_as_unit.py | jbrockmendel | 2 |
| pandas/compat/_cpu.py | jbrockmendel | 2 |
| subprojects/fast_float.wrap | jbrockmendel | 2 |
| subprojects/packagefiles/fast_float/meson.build | jbrockmendel | 2 |
| pandas/tests/indexes/datetimes/methods/test_fillna.py | jbrockmendel | 2 |
| pandas/_libs/ops_dispatch.pyi | jbrockmendel | 2 |
| pandas/_libs/hashing.pyi | jbrockmendel | 2 |
| scripts/issue_assignment/gate.py | Richard Shadrach | 2 |
| pandas/tests/frame/methods/test_select.py | Richard Shadrach | 2 |
| scripts/issue_assignment/label_awaiting_review.py | Richard Shadrach | 2 |
| pandas/tests/util/test_rewrite_warning.py | Richard Shadrach | 2 |
| pandas/tests/apply/common.py | Richard Shadrach | 2 |
| doc/_templates/docs-announcement-banner.html | Joris Van den Bossche | 2 |
| doc/_templates/autosummary/accessor.rst | Joris Van den Bossche | 2 |
| ci/import_pandas_check.py | Matthew Roeschke | 2 |
| pandas/tests/interchange/test_utils.py | Matthew Roeschke | 2 |
| doc/source/reference/options.rst | Matthew Roeschke | 2 |
| pandas/api/typing/aliases.py | Irv Lustig | 2 |
| doc/source/getting_started/comparison/includes/column_selection.rst | Aidan Feldman | 2 |
| doc/source/getting_started/comparison/includes/column_operations.rst | Aidan Feldman | 2 |
| doc/source/getting_started/comparison/includes/filtering.rst | Aidan Feldman | 2 |
| doc/source/getting_started/comparison/includes/extract_substring.rst | Aidan Feldman | 2 |
| doc/source/getting_started/comparison/includes/find_substring.rst | Aidan Feldman | 2 |
| doc/source/getting_started/comparison/includes/groupby.rst | Aidan Feldman | 2 |
| doc/source/getting_started/comparison/includes/if_then.rst | Aidan Feldman | 2 |
| doc/source/getting_started/comparison/includes/missing_intro.rst | Aidan Feldman | 2 |
| doc/source/getting_started/comparison/includes/time_date.rst | Aidan Feldman | 2 |
| doc/source/getting_started/comparison/includes/transform.rst | Aidan Feldman | 2 |
| pandas/tests/io/formats/data/html/truncate_multi_index_sparse_off.html | Simon Hawkins | 2 |
| web/pandas/about/sponsors.md | Marc Garcia | 2 |
| web/pandas/static/img/pandas.svg | Marc Garcia | 2 |
| doc/source/_static/whatsnew_assign.png | Tom Augspurger | 2 |
| pandas/tests/tools/__init__.py | Jeff Reback | 2 |
| pandas/tests/computation/__init__.py | Jeff Reback | 2 |
| pandas/tests/io/json/data/line_delimited.json | Fangchen Li | 1 |
| doc/sphinxext/rst_list_indentation.py | jbrockmendel | 1 |
| pandas/tests/extension/decimal/test_decimal_none.py | jbrockmendel | 1 |
| pandas/tests/io/sas/data/amd_page.sas7bdat.bz2 | jbrockmendel | 1 |
| pandas/tests/io/sas/data/amd_page_resaved.sas7bdat.bz2 | jbrockmendel | 1 |
| .github/lychee.toml | jbrockmendel | 1 |
| .github/workflows/linkcheck.yml | jbrockmendel | 1 |
| meson.options | jbrockmendel | 1 |
| scripts/tests/test_extension_array_fixtures.py | jbrockmendel | 1 |
| scripts/tests/test_validate_test_dependencies.py | jbrockmendel | 1 |
| scripts/validate_test_dependencies.py | jbrockmendel | 1 |
| scripts/check_test_imports.py | jbrockmendel | 1 |
| scripts/tests/test_check_test_imports.py | jbrockmendel | 1 |
| pandas/tests/io/data/feather/simple_dataset.feather | jbrockmendel | 1 |
| pandas/tests/test_cpu.py | jbrockmendel | 1 |
| pandas/_libs/src/parser/fast_float_wrappers.cpp | jbrockmendel | 1 |
| pandas/tests/io/data/stata/stata-date-overflow-36096.dta | jbrockmendel | 1 |
| LICENSES/NERI_SCHNEIDER_LICENSE | jbrockmendel | 1 |
| pandas/tests/libs/test_libalgos.py | jbrockmendel | 1 |
| pandas/tests/scalar/timedelta/methods/__init__.py | jbrockmendel | 1 |
| pandas/tests/scalar/timestamp/methods/__init__.py | jbrockmendel | 1 |
Primary owner = the author with the most commits to a file. Solely owned = files only that author has touched.
| Author | Files owned | Solely owned | Files touched |
|---|---|---|---|
| jbrockmendel | 1,162 | 93 | 1,650 |
| Matthew Roeschke | 222 | 20 | 1,338 |
| Ali McMaster | 132 | 132 | 343 |
| Simon Hawkins | 117 | 93 | 666 |
| Joris Van den Bossche | 78 | 28 | 1,157 |
| Jeff Reback | 75 | 67 | 436 |
| Richard Shadrach | 74 | 20 | 720 |
| Patrick Hoefler | 67 | 16 | 862 |
| cmjcharlton | 65 | 62 | 68 |
| JHM Darbyshire | 58 | 41 | 100 |
| Marc Garcia | 56 | 28 | 266 |
| Tom Augspurger | 44 | 6 | 709 |
| Stijn Van Hoey | 42 | 31 | 59 |
| Aidan Feldman | 32 | 25 | 54 |
| gfyoung | 28 | 8 | 366 |
| Marco Edward Gorelli | 27 | 1 | 1,097 |
| William Ayd | 24 | 0 | 334 |
| Wes McKinney | 22 | 4 | 61 |
| Rik-de-Kort | 18 | 17 | 32 |
| Thomas Li | 17 | 8 | 322 |
| Torsten Wörtwein | 15 | 1 | 391 |
| Andrew Hawyrluk | 15 | 15 | 41 |
| Terji Petersen | 14 | 1 | 646 |
| Álvaro Kothe | 13 | 7 | 197 |
| Saurav Chakravorty | 13 | 0 | 49 |
Files touched by the most people — shared code where changes are most likely to need coordination.
| File | Contributors | Primary owner | Owner share |
|---|---|---|---|
| pandas/core/frame.py | 683 | Wes McKinney | 19.6% |
| pandas/core/generic.py | 622 | jbrockmendel | 15.5% |
| pandas/core/series.py | 388 | Wes McKinney | 19.0% |
| pandas/core/indexes/base.py | 218 | jbrockmendel | 42.8% |
| doc/source/whatsnew/v3.0.0.rst | 180 | jbrockmendel | 17.7% |
| pandas/io/pytables.py | 170 | jbrockmendel | 22.2% |
| pandas/core/groupby/groupby.py | 170 | jbrockmendel | 26.8% |
| pandas/core/indexes/multi.py | 156 | jbrockmendel | 29.9% |
| pandas/core/indexing.py | 153 | jbrockmendel | 23.8% |
| pandas/core/base.py | 136 | jbrockmendel | 17.1% |
| pandas/core/algorithms.py | 134 | jbrockmendel | 27.9% |
| pandas/io/sql.py | 134 | Joris Van den Bossche | 15.1% |
| doc/source/whatsnew/v1.1.0.rst | 133 | jbrockmendel | 17.8% |
| pandas/core/arrays/categorical.py | 128 | jbrockmendel | 37.7% |
| pandas/plotting/_core.py | 128 | jbrockmendel | 8.3% |
| doc/source/whatsnew/v1.0.0.rst | 126 | jbrockmendel | 26.0% |
| doc/source/whatsnew/v0.25.0.rst | 126 | Matthew Roeschke | 12.6% |
| pandas/io/formats/style.py | 119 | JHM Darbyshire | 34.0% |
| pandas/core/groupby/generic.py | 117 | jbrockmendel | 32.9% |
| doc/source/user_guide/io.rst | 117 | jbrockmendel | 18.7% |