Code Ownership

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 Tracked
2,687
in the current tree
Bus Factor
2
2 authors are primary owner of 1,384 of 2,687 files
Single-Owner Files
850
31.6% of tracked files
Contributors
3,447
authors who changed files

Bus factor risk — single-owner files

Files only one author has ever changed. The more a file has changed, the more knowledge is at risk if that person leaves.

FileSole ownerCommits
pandas/tests/tslibs/test_np_datetime.pyjbrockmendel12
pandas/tests/indexes/categorical/test_fillna.pyjbrockmendel9
pandas/tests/arrays/timedeltas/test_constructors.pyjbrockmendel7
pandas/_libs/tslibs/parsing.pxdjbrockmendel6
pandas/tests/groupby/test_sparse.pyjbrockmendel5
pandas/tests/indexes/datetimes/methods/test_delete.pyjbrockmendel5
pandas/tests/indexes/datetimes/methods/test_repeat.pyjbrockmendel5
pandas/io/formats/templates/latex_longtable.tplJHM Darbyshire5
pandas/io/formats/templates/html_table.tplJHM Darbyshire5
pandas/tests/indexes/datetimes/methods/test_unique.pyjbrockmendel4
Table: the 100 most-changed of 850 single-owner files
FileSole ownerCommits
pandas/tests/tslibs/test_np_datetime.pyjbrockmendel12
pandas/tests/indexes/categorical/test_fillna.pyjbrockmendel9
pandas/tests/arrays/timedeltas/test_constructors.pyjbrockmendel7
pandas/_libs/tslibs/parsing.pxdjbrockmendel6
pandas/tests/groupby/test_sparse.pyjbrockmendel5
pandas/tests/indexes/datetimes/methods/test_delete.pyjbrockmendel5
pandas/tests/indexes/datetimes/methods/test_repeat.pyjbrockmendel5
pandas/io/formats/templates/latex_longtable.tplJHM Darbyshire5
pandas/io/formats/templates/html_table.tplJHM Darbyshire5
pandas/tests/indexes/datetimes/methods/test_unique.pyjbrockmendel4
pandas/_libs/tslibs/base.pxdjbrockmendel4
pandas/_libs/tslibs/base.pyxjbrockmendel4
pandas/tests/apply/test_series_apply_relabeling.pyRichard Shadrach4
pandas/io/formats/templates/latex_table.tplJHM Darbyshire4
pandas/io/formats/templates/latex.tplJHM Darbyshire4
pandas/tests/scalar/interval/test_overlaps.pyjbrockmendel3
pandas/tests/frame/methods/test_infer_objects.pyjbrockmendel3
pandas/tests/indexes/categorical/test_append.pyjbrockmendel3
pandas/tests/indexes/datetimes/methods/test_to_julian_date.pyjbrockmendel3
pandas/tests/indexes/timedeltas/methods/test_resolution.pyjbrockmendel3
pandas/tests/scalar/timedelta/methods/test_as_unit.pyjbrockmendel3
pandas/tests/scalar/timestamp/methods/test_to_julian_date.pyjbrockmendel3
pandas/tests/scalar/timestamp/methods/test_tz_convert.pyjbrockmendel3
pandas/tests/frame/methods/test_combine.pyjbrockmendel3
pandas/tests/arrays/floating/test_contains.pyjbrockmendel3
scripts/issue_assignment/messages.pyRichard Shadrach3
.github/workflows/pr-issue-gate.ymlRichard Shadrach3
scripts/issue_assignment/client.pyRichard Shadrach3
scripts/issue_assignment/core.pyRichard Shadrach3
doc/source/getting_started/comparison/includes/length.rstAidan Feldman3
doc/source/getting_started/comparison/includes/sorting.rstAidan Feldman3
doc/source/development/copy_on_write.rstPatrick Hoefler3
web/pandas/community/blog/index.htmlMarc Garcia3
pandas/io/formats/templates/html_style.tplJHM Darbyshire3
pandas/tests/arrays/interval/test_formats.pyjbrockmendel2
pandas/_libs/_ujson.pyijbrockmendel2
pandas/tests/arithmetic/test_bool.pyjbrockmendel2
pandas/tests/construction/test_extract_array.pyjbrockmendel2
pandas/tests/frame/methods/test_swaplevel.pyjbrockmendel2
pandas/tests/indexes/period/methods/test_insert.pyjbrockmendel2
pandas/tests/indexes/period/methods/test_repeat.pyjbrockmendel2
pandas/tests/indexes/timedeltas/methods/test_repeat.pyjbrockmendel2
pandas/tests/scalar/interval/test_constructors.pyjbrockmendel2
pandas/tests/scalar/interval/test_contains.pyjbrockmendel2
pandas/tests/scalar/interval/test_formats.pyjbrockmendel2
pandas/tests/scalar/timestamp/methods/test_as_unit.pyjbrockmendel2
pandas/compat/_cpu.pyjbrockmendel2
subprojects/fast_float.wrapjbrockmendel2
subprojects/packagefiles/fast_float/meson.buildjbrockmendel2
pandas/tests/indexes/datetimes/methods/test_fillna.pyjbrockmendel2
pandas/_libs/ops_dispatch.pyijbrockmendel2
pandas/_libs/hashing.pyijbrockmendel2
scripts/issue_assignment/gate.pyRichard Shadrach2
pandas/tests/frame/methods/test_select.pyRichard Shadrach2
scripts/issue_assignment/label_awaiting_review.pyRichard Shadrach2
pandas/tests/util/test_rewrite_warning.pyRichard Shadrach2
pandas/tests/apply/common.pyRichard Shadrach2
doc/_templates/docs-announcement-banner.htmlJoris Van den Bossche2
doc/_templates/autosummary/accessor.rstJoris Van den Bossche2
ci/import_pandas_check.pyMatthew Roeschke2
pandas/tests/interchange/test_utils.pyMatthew Roeschke2
doc/source/reference/options.rstMatthew Roeschke2
pandas/api/typing/aliases.pyIrv Lustig2
doc/source/getting_started/comparison/includes/column_selection.rstAidan Feldman2
doc/source/getting_started/comparison/includes/column_operations.rstAidan Feldman2
doc/source/getting_started/comparison/includes/filtering.rstAidan Feldman2
doc/source/getting_started/comparison/includes/extract_substring.rstAidan Feldman2
doc/source/getting_started/comparison/includes/find_substring.rstAidan Feldman2
doc/source/getting_started/comparison/includes/groupby.rstAidan Feldman2
doc/source/getting_started/comparison/includes/if_then.rstAidan Feldman2
doc/source/getting_started/comparison/includes/missing_intro.rstAidan Feldman2
doc/source/getting_started/comparison/includes/time_date.rstAidan Feldman2
doc/source/getting_started/comparison/includes/transform.rstAidan Feldman2
pandas/tests/io/formats/data/html/truncate_multi_index_sparse_off.htmlSimon Hawkins2
web/pandas/about/sponsors.mdMarc Garcia2
web/pandas/static/img/pandas.svgMarc Garcia2
doc/source/_static/whatsnew_assign.pngTom Augspurger2
pandas/tests/tools/__init__.pyJeff Reback2
pandas/tests/computation/__init__.pyJeff Reback2
pandas/tests/io/json/data/line_delimited.jsonFangchen Li1
doc/sphinxext/rst_list_indentation.pyjbrockmendel1
pandas/tests/extension/decimal/test_decimal_none.pyjbrockmendel1
pandas/tests/io/sas/data/amd_page.sas7bdat.bz2jbrockmendel1
pandas/tests/io/sas/data/amd_page_resaved.sas7bdat.bz2jbrockmendel1
.github/lychee.tomljbrockmendel1
.github/workflows/linkcheck.ymljbrockmendel1
meson.optionsjbrockmendel1
scripts/tests/test_extension_array_fixtures.pyjbrockmendel1
scripts/tests/test_validate_test_dependencies.pyjbrockmendel1
scripts/validate_test_dependencies.pyjbrockmendel1
scripts/check_test_imports.pyjbrockmendel1
scripts/tests/test_check_test_imports.pyjbrockmendel1
pandas/tests/io/data/feather/simple_dataset.featherjbrockmendel1
pandas/tests/test_cpu.pyjbrockmendel1
pandas/_libs/src/parser/fast_float_wrappers.cppjbrockmendel1
pandas/tests/io/data/stata/stata-date-overflow-36096.dtajbrockmendel1
LICENSES/NERI_SCHNEIDER_LICENSEjbrockmendel1
pandas/tests/libs/test_libalgos.pyjbrockmendel1
pandas/tests/scalar/timedelta/methods/__init__.pyjbrockmendel1
pandas/tests/scalar/timestamp/methods/__init__.pyjbrockmendel1

Ownership by author

Primary owner = the author with the most commits to a file. Solely owned = files only that author has touched.

AuthorFiles ownedSolely ownedFiles touched
jbrockmendel1,162931,650
Matthew Roeschke222201,338
Ali McMaster132132343
Simon Hawkins11793666
Joris Van den Bossche78281,157
Jeff Reback7567436
Richard Shadrach7420720
Patrick Hoefler6716862
cmjcharlton656268
JHM Darbyshire5841100
Marc Garcia5628266
Tom Augspurger446709
Stijn Van Hoey423159
Aidan Feldman322554
gfyoung288366
Marco Edward Gorelli2711,097
William Ayd240334
Wes McKinney22461
Rik-de-Kort181732
Thomas Li178322
Torsten Wörtwein151391
Andrew Hawyrluk151541
Terji Petersen141646
Álvaro Kothe137197
Saurav Chakravorty13049

Showing top 25 of 3447 contributors.

Most shared files

Files touched by the most people — shared code where changes are most likely to need coordination.

FileContributorsPrimary ownerOwner share
pandas/core/frame.py683Wes McKinney19.6%
pandas/core/generic.py622jbrockmendel15.5%
pandas/core/series.py388Wes McKinney19.0%
pandas/core/indexes/base.py218jbrockmendel42.8%
doc/source/whatsnew/v3.0.0.rst180jbrockmendel17.7%
pandas/io/pytables.py170jbrockmendel22.2%
pandas/core/groupby/groupby.py170jbrockmendel26.8%
pandas/core/indexes/multi.py156jbrockmendel29.9%
pandas/core/indexing.py153jbrockmendel23.8%
pandas/core/base.py136jbrockmendel17.1%
pandas/core/algorithms.py134jbrockmendel27.9%
pandas/io/sql.py134Joris Van den Bossche15.1%
doc/source/whatsnew/v1.1.0.rst133jbrockmendel17.8%
pandas/core/arrays/categorical.py128jbrockmendel37.7%
pandas/plotting/_core.py128jbrockmendel8.3%
doc/source/whatsnew/v1.0.0.rst126jbrockmendel26.0%
doc/source/whatsnew/v0.25.0.rst126Matthew Roeschke12.6%
pandas/io/formats/style.py119JHM Darbyshire34.0%
pandas/core/groupby/generic.py117jbrockmendel32.9%
doc/source/user_guide/io.rst117jbrockmendel18.7%