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,413
in the current tree
Bus Factor
6
6 authors are primary owner of 1,304 of 2,413 files
Single-Owner Files
898
37.2% of tracked files
Contributors
1,507
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
numpy/lib/_user_array_impl.pyiJoren Hammudoglu14
tools/stubtest/allowlist.txtJoren Hammudoglu11
numpy/_core/src/multiarray/stringdtype/dtype.hNathan Goldbaum10
numpy/lib/recfunctions.pyiJoren Hammudoglu7
numpy/f2py/symbolic.pyiJoren Hammudoglu7
numpy/f2py/_isocbind.pyRohit Goswami7
numpy/_core/_exceptions.pyiJoren Hammudoglu6
benchmarks/benchmarks/bench_searchsorted.pyAlejandro Candioti6
numpy/_core/src/multiarray/stringdtype/utf8_utils.cNathan Goldbaum5
numpy/typing/__init__.pyiJoren Hammudoglu5
Table: the 100 most-changed of 898 single-owner files
FileSole ownerCommits
numpy/lib/_user_array_impl.pyiJoren Hammudoglu14
tools/stubtest/allowlist.txtJoren Hammudoglu11
numpy/_core/src/multiarray/stringdtype/dtype.hNathan Goldbaum10
numpy/lib/recfunctions.pyiJoren Hammudoglu7
numpy/f2py/symbolic.pyiJoren Hammudoglu7
numpy/f2py/_isocbind.pyRohit Goswami7
numpy/_core/_exceptions.pyiJoren Hammudoglu6
benchmarks/benchmarks/bench_searchsorted.pyAlejandro Candioti6
numpy/_core/src/multiarray/stringdtype/utf8_utils.cNathan Goldbaum5
numpy/typing/__init__.pyiJoren Hammudoglu5
numpy/_core/_dtype.pyiJoren Hammudoglu5
numpy/f2py/_backends/_meson.pyiJoren Hammudoglu5
numpy/f2py/crackfortran.pyiJoren Hammudoglu5
doc/neps/nep-0058-bytestring-dtype.rstNathan Goldbaum4
numpy/_core/src/multiarray/stringdtype/utf8_utils.hNathan Goldbaum4
numpy/_typing/_nbit_base.pyiJoren Hammudoglu4
numpy/_utils/_inspect.pyiJoren Hammudoglu4
numpy/_utils/_pep440.pyiJoren Hammudoglu4
numpy/f2py/rules.pyiJoren Hammudoglu4
tools/write_release.pyCharles Harris4
doc/release/upcoming_changes/31069.improvement.rstPratham Hole4
doc/source/reference/random/examples/numba.rstMatti Picus4
doc/source/reference/random/examples/numba_cffi.rstMatti Picus4
doc/neps/_static/nep-0050-promotion-no-fonts.svgSebastian Berg4
doc/neps/_static/nep-0050-promotion.svgSebastian Berg4
doc/release/upcoming_changes/32100.improvement.rstAltamash4
tools/rebase_installed_dlls_cygwin.sh!DWesl4
tools/list_installed_dll_dependencies_cygwin.sh!DWesl4
numpy/_core/src/common/simd/README.mdSayed Awad4
numpy/_core/src/common/simd/simd.inc.hppSayed Awad4
numpy/linalg/_umath_linalg.pyiJoren Hammudoglu3
numpy/_core/_methods.pyiJoren Hammudoglu3
numpy/testing/print_coercion_tables.pyiJoren Hammudoglu3
doc/source/release/1.25.0-notes.rstCharles Harris3
doc/source/dev/ai_policy.rstMatti Picus3
doc/source/reference/random/examples/cffi.rstMatti Picus3
doc/neps/_static/nep-0041-type-sketch-no-fonts.svgSebastian Berg3
numpy/_core/tests/data/astype_copy.pklMateusz Sokół3
numpy/linalg/lapack_lite/f2c_config.c.patchEric Wieser3
doc/source/_templates/autosummary/class.rstPauli Virtanen3
doc/release/upcoming_changes/32296.change.rstNathan Goldbaum2
doc/neps/_static/nep-0055-arena-string-memory-layout.svgNathan Goldbaum2
doc/neps/_static/nep-0055-heap-string-memory-layout.svgNathan Goldbaum2
doc/neps/_static/nep-0055-short-string-memory-layout.svgNathan Goldbaum2
numpy/_core/printoptions.pyiJoren Hammudoglu2
numpy/f2py/cfuncs.pyiJoren Hammudoglu2
numpy/lib/user_array.pyiJoren Hammudoglu2
numpy/typing/tests/data/pass/lib_user_array.pyJoren Hammudoglu2
numpy/_core/_add_newdocs.pyiJoren Hammudoglu2
numpy/_core/_add_newdocs_scalars.pyiJoren Hammudoglu2
numpy/testing/_private/extbuild.pyiJoren Hammudoglu2
numpy/f2py/_src_pyf.pyiJoren Hammudoglu2
numpy/testing/overrides.pyiJoren Hammudoglu2
numpy/f2py/diagnose.pyiJoren Hammudoglu2
numpy/_pyinstaller/hook-numpy.pyiJoren Hammudoglu2
numpy/_globals.pyiJoren Hammudoglu2
.github/ISSUE_TEMPLATE/typing.ymlJoren Hammudoglu2
doc/source/release/1.19.3-notes.rstCharles Harris2
doc/changelog/1.12.1-changelog.rstCharles Harris2
numpy/random/__init__.pxdMatti Picus2
doc/source/reference/random/examples/cython/extending.pyx.rstMatti Picus2
doc/source/reference/random/examples/cython/extending_distributions.pyx.rstMatti Picus2
numpy/random/tests/data/mt19937-testset-1.csvMatti Picus2
numpy/random/tests/data/mt19937-testset-2.csvMatti Picus2
numpy/random/tests/data/philox-testset-1.csvMatti Picus2
numpy/random/tests/data/philox-testset-2.csvMatti Picus2
numpy/random/src/philox/LICENSE.mdMatti Picus2
numpy/random/LICENSE.mdMatti Picus2
numpy/random/src/splitmix64/splitmix64.hMatti Picus2
doc/release/upcoming_changes/32593.improvement.rstIason Krommydas2
doc/release/upcoming_changes/32508.change.rstYeonho Kim2
pixi-packages/tsan_freethreading/pixi.tomlLucas Colley2
numpy/f2py/_isofenv.py!DWesl2
numpy/f2py/tests/test_isof.py!DWesl2
tools/list_numpy_dlls.sh!DWesl2
numpy/f2py/tests/test_inplace.pyMarten van Kerkwijk2
numpy/f2py/tests/src/regression/f77comments.fRohit Goswami2
doc/source/f2py/code/advanced/boilerplating/src/adder.pyf.fyppRohit Goswami2
numpy/f2py/tests/src/crackfortran/data_stmts.f90Rohit Goswami2
numpy/f2py/tests/src/f2cmap/isoFortranEnvMap.f90Rohit Goswami2
doc/source/f2py/code/ftype.fRohit Goswami2
numpy/_core/src/multiarray/fnv.cKoki Watanabe2
doc/source/dev/spin.rstNandika P. T.2
doc/source/f2py/code/add-edited.pyfMelissa Weber Mendonça2
doc/source/f2py/code/add-improved.fMelissa Weber Mendonça2
doc/source/f2py/code/add.fMelissa Weber Mendonça2
doc/source/f2py/code/add.pyfMelissa Weber Mendonça2
doc/source/f2py/code/filter.fMelissa Weber Mendonça2
doc/source/f2py/code/myroutine-edited.pyfMelissa Weber Mendonça2
doc/source/f2py/code/myroutine.pyfMelissa Weber Mendonça2
.github/ISSUE_TEMPLATE/config.ymlMelissa Weber Mendonça2
numpy/random/_bounded_integers.pyiGUAN MING2
.github/ISSUE_TEMPLATE/documentation.ymlMukulika Pahari2
.github/ISSUE_TEMPLATE/feature-request.ymlMukulika Pahari2
.github/ISSUE_TEMPLATE/post-install.ymlMukulika Pahari2
numpy/f2py/tests/src/size/foo.f90Pearu Peterson2
numpy/f2py/tests/src/assumed_shape/foo_free.f90Pearu Peterson2
doc/source/_templates/autosummary/module.rstTakanori Hirano2
doc/source/dev/ghcodespaces-imgs/codespaces-codebutton.pngInessa Pawson1
branding/logo/logomark/numpylogoicon.pngInessa Pawson1

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
Charles Harris298168560
Joren Hammudoglu25265555
Mateusz Sokół228114820
Matti Picus211107576
Rohit Goswami171119228
Sebastian Berg14414494
Nathan Goldbaum13535431
Dimitri Papadopoulos Orfanos1023687
Ralf Gommers6815433
Bas van Beek591249
Sayed Awad499119
Anne Bonner262538
Dragos-Georgian Ion26037
Pratham Hole242132
Iason Krommydas212199
Melissa Weber Mendonça211184
Lysandros Nikolaou21269
Pauli Virtanen208166
Eric Wieser197188
Mukulika Pahari191340
Stephan Hoyer16081
Pieter Eendebak155189
Stefan van der Walt151120
Warren Weckesser141142
Kevin Sheppard14369

Showing top 25 of 1507 contributors.

Most shared files

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

FileContributorsPrimary ownerOwner share
numpy/ma/core.py134Pierre GM19.6%
numpy/lib/tests/test_function_base.py134Charles Harris7.8%
numpy/core/fromnumeric.py130Charles Harris9.7%
numpy/core/numeric.py124Travis Oliphant16.6%
numpy/lib/npyio.py110Charles Harris13.0%
numpy/ma/tests/test_core.py87Pierre GM20.9%
numpy/lib/tests/test_io.py86Charles Harris11.3%
numpy/ma/extras.py79Pierre GM11.7%
numpy/testing/_private/utils.py71Nathan Goldbaum13.5%
numpy/linalg/tests/test_linalg.py66Charles Harris12.8%
numpy/random/_generator.pyx65Kevin Sheppard12.1%
doc/source/conf.py63Pauli Virtanen12.5%
numpy/lib/_function_base_impl.py57Dimitri Papadopoulos Orfanos13.8%
numpy/testing/tests/test_utils.py56David Cournapeau12.4%
numpy/__init__.pyi55Joren Hammudoglu40.3%
numpy/__init__.py54Mateusz Sokół17.1%
numpy/core/arrayprint.py53Allan Haldane15.1%
numpy/lib/format.py53Charles Harris13.4%
numpy/_core/tests/test_multiarray.py52Sebastian Berg14.8%
doc/source/reference/c-api/array.rst52Sebastian Berg23.5%