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 |
|---|---|---|
| numpy/lib/_user_array_impl.pyi | Joren Hammudoglu | 14 |
| tools/stubtest/allowlist.txt | Joren Hammudoglu | 11 |
| numpy/_core/src/multiarray/stringdtype/dtype.h | Nathan Goldbaum | 10 |
| numpy/lib/recfunctions.pyi | Joren Hammudoglu | 7 |
| numpy/f2py/symbolic.pyi | Joren Hammudoglu | 7 |
| numpy/f2py/_isocbind.py | Rohit Goswami | 7 |
| numpy/_core/_exceptions.pyi | Joren Hammudoglu | 6 |
| benchmarks/benchmarks/bench_searchsorted.py | Alejandro Candioti | 6 |
| numpy/_core/src/multiarray/stringdtype/utf8_utils.c | Nathan Goldbaum | 5 |
| numpy/typing/__init__.pyi | Joren Hammudoglu | 5 |
| File | Sole owner | Commits |
|---|---|---|
| numpy/lib/_user_array_impl.pyi | Joren Hammudoglu | 14 |
| tools/stubtest/allowlist.txt | Joren Hammudoglu | 11 |
| numpy/_core/src/multiarray/stringdtype/dtype.h | Nathan Goldbaum | 10 |
| numpy/lib/recfunctions.pyi | Joren Hammudoglu | 7 |
| numpy/f2py/symbolic.pyi | Joren Hammudoglu | 7 |
| numpy/f2py/_isocbind.py | Rohit Goswami | 7 |
| numpy/_core/_exceptions.pyi | Joren Hammudoglu | 6 |
| benchmarks/benchmarks/bench_searchsorted.py | Alejandro Candioti | 6 |
| numpy/_core/src/multiarray/stringdtype/utf8_utils.c | Nathan Goldbaum | 5 |
| numpy/typing/__init__.pyi | Joren Hammudoglu | 5 |
| numpy/_core/_dtype.pyi | Joren Hammudoglu | 5 |
| numpy/f2py/_backends/_meson.pyi | Joren Hammudoglu | 5 |
| numpy/f2py/crackfortran.pyi | Joren Hammudoglu | 5 |
| doc/neps/nep-0058-bytestring-dtype.rst | Nathan Goldbaum | 4 |
| numpy/_core/src/multiarray/stringdtype/utf8_utils.h | Nathan Goldbaum | 4 |
| numpy/_typing/_nbit_base.pyi | Joren Hammudoglu | 4 |
| numpy/_utils/_inspect.pyi | Joren Hammudoglu | 4 |
| numpy/_utils/_pep440.pyi | Joren Hammudoglu | 4 |
| numpy/f2py/rules.pyi | Joren Hammudoglu | 4 |
| tools/write_release.py | Charles Harris | 4 |
| doc/release/upcoming_changes/31069.improvement.rst | Pratham Hole | 4 |
| doc/source/reference/random/examples/numba.rst | Matti Picus | 4 |
| doc/source/reference/random/examples/numba_cffi.rst | Matti Picus | 4 |
| doc/neps/_static/nep-0050-promotion-no-fonts.svg | Sebastian Berg | 4 |
| doc/neps/_static/nep-0050-promotion.svg | Sebastian Berg | 4 |
| doc/release/upcoming_changes/32100.improvement.rst | Altamash | 4 |
| tools/rebase_installed_dlls_cygwin.sh | !DWesl | 4 |
| tools/list_installed_dll_dependencies_cygwin.sh | !DWesl | 4 |
| numpy/_core/src/common/simd/README.md | Sayed Awad | 4 |
| numpy/_core/src/common/simd/simd.inc.hpp | Sayed Awad | 4 |
| numpy/linalg/_umath_linalg.pyi | Joren Hammudoglu | 3 |
| numpy/_core/_methods.pyi | Joren Hammudoglu | 3 |
| numpy/testing/print_coercion_tables.pyi | Joren Hammudoglu | 3 |
| doc/source/release/1.25.0-notes.rst | Charles Harris | 3 |
| doc/source/dev/ai_policy.rst | Matti Picus | 3 |
| doc/source/reference/random/examples/cffi.rst | Matti Picus | 3 |
| doc/neps/_static/nep-0041-type-sketch-no-fonts.svg | Sebastian Berg | 3 |
| numpy/_core/tests/data/astype_copy.pkl | Mateusz Sokół | 3 |
| numpy/linalg/lapack_lite/f2c_config.c.patch | Eric Wieser | 3 |
| doc/source/_templates/autosummary/class.rst | Pauli Virtanen | 3 |
| doc/release/upcoming_changes/32296.change.rst | Nathan Goldbaum | 2 |
| doc/neps/_static/nep-0055-arena-string-memory-layout.svg | Nathan Goldbaum | 2 |
| doc/neps/_static/nep-0055-heap-string-memory-layout.svg | Nathan Goldbaum | 2 |
| doc/neps/_static/nep-0055-short-string-memory-layout.svg | Nathan Goldbaum | 2 |
| numpy/_core/printoptions.pyi | Joren Hammudoglu | 2 |
| numpy/f2py/cfuncs.pyi | Joren Hammudoglu | 2 |
| numpy/lib/user_array.pyi | Joren Hammudoglu | 2 |
| numpy/typing/tests/data/pass/lib_user_array.py | Joren Hammudoglu | 2 |
| numpy/_core/_add_newdocs.pyi | Joren Hammudoglu | 2 |
| numpy/_core/_add_newdocs_scalars.pyi | Joren Hammudoglu | 2 |
| numpy/testing/_private/extbuild.pyi | Joren Hammudoglu | 2 |
| numpy/f2py/_src_pyf.pyi | Joren Hammudoglu | 2 |
| numpy/testing/overrides.pyi | Joren Hammudoglu | 2 |
| numpy/f2py/diagnose.pyi | Joren Hammudoglu | 2 |
| numpy/_pyinstaller/hook-numpy.pyi | Joren Hammudoglu | 2 |
| numpy/_globals.pyi | Joren Hammudoglu | 2 |
| .github/ISSUE_TEMPLATE/typing.yml | Joren Hammudoglu | 2 |
| doc/source/release/1.19.3-notes.rst | Charles Harris | 2 |
| doc/changelog/1.12.1-changelog.rst | Charles Harris | 2 |
| numpy/random/__init__.pxd | Matti Picus | 2 |
| doc/source/reference/random/examples/cython/extending.pyx.rst | Matti Picus | 2 |
| doc/source/reference/random/examples/cython/extending_distributions.pyx.rst | Matti Picus | 2 |
| numpy/random/tests/data/mt19937-testset-1.csv | Matti Picus | 2 |
| numpy/random/tests/data/mt19937-testset-2.csv | Matti Picus | 2 |
| numpy/random/tests/data/philox-testset-1.csv | Matti Picus | 2 |
| numpy/random/tests/data/philox-testset-2.csv | Matti Picus | 2 |
| numpy/random/src/philox/LICENSE.md | Matti Picus | 2 |
| numpy/random/LICENSE.md | Matti Picus | 2 |
| numpy/random/src/splitmix64/splitmix64.h | Matti Picus | 2 |
| doc/release/upcoming_changes/32593.improvement.rst | Iason Krommydas | 2 |
| doc/release/upcoming_changes/32508.change.rst | Yeonho Kim | 2 |
| pixi-packages/tsan_freethreading/pixi.toml | Lucas Colley | 2 |
| numpy/f2py/_isofenv.py | !DWesl | 2 |
| numpy/f2py/tests/test_isof.py | !DWesl | 2 |
| tools/list_numpy_dlls.sh | !DWesl | 2 |
| numpy/f2py/tests/test_inplace.py | Marten van Kerkwijk | 2 |
| numpy/f2py/tests/src/regression/f77comments.f | Rohit Goswami | 2 |
| doc/source/f2py/code/advanced/boilerplating/src/adder.pyf.fypp | Rohit Goswami | 2 |
| numpy/f2py/tests/src/crackfortran/data_stmts.f90 | Rohit Goswami | 2 |
| numpy/f2py/tests/src/f2cmap/isoFortranEnvMap.f90 | Rohit Goswami | 2 |
| doc/source/f2py/code/ftype.f | Rohit Goswami | 2 |
| numpy/_core/src/multiarray/fnv.c | Koki Watanabe | 2 |
| doc/source/dev/spin.rst | Nandika P. T. | 2 |
| doc/source/f2py/code/add-edited.pyf | Melissa Weber Mendonça | 2 |
| doc/source/f2py/code/add-improved.f | Melissa Weber Mendonça | 2 |
| doc/source/f2py/code/add.f | Melissa Weber Mendonça | 2 |
| doc/source/f2py/code/add.pyf | Melissa Weber Mendonça | 2 |
| doc/source/f2py/code/filter.f | Melissa Weber Mendonça | 2 |
| doc/source/f2py/code/myroutine-edited.pyf | Melissa Weber Mendonça | 2 |
| doc/source/f2py/code/myroutine.pyf | Melissa Weber Mendonça | 2 |
| .github/ISSUE_TEMPLATE/config.yml | Melissa Weber Mendonça | 2 |
| numpy/random/_bounded_integers.pyi | GUAN MING | 2 |
| .github/ISSUE_TEMPLATE/documentation.yml | Mukulika Pahari | 2 |
| .github/ISSUE_TEMPLATE/feature-request.yml | Mukulika Pahari | 2 |
| .github/ISSUE_TEMPLATE/post-install.yml | Mukulika Pahari | 2 |
| numpy/f2py/tests/src/size/foo.f90 | Pearu Peterson | 2 |
| numpy/f2py/tests/src/assumed_shape/foo_free.f90 | Pearu Peterson | 2 |
| doc/source/_templates/autosummary/module.rst | Takanori Hirano | 2 |
| doc/source/dev/ghcodespaces-imgs/codespaces-codebutton.png | Inessa Pawson | 1 |
| branding/logo/logomark/numpylogoicon.png | Inessa Pawson | 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 |
|---|---|---|---|
| Charles Harris | 298 | 168 | 560 |
| Joren Hammudoglu | 252 | 65 | 555 |
| Mateusz Sokół | 228 | 114 | 820 |
| Matti Picus | 211 | 107 | 576 |
| Rohit Goswami | 171 | 119 | 228 |
| Sebastian Berg | 144 | 14 | 494 |
| Nathan Goldbaum | 135 | 35 | 431 |
| Dimitri Papadopoulos Orfanos | 102 | 3 | 687 |
| Ralf Gommers | 68 | 15 | 433 |
| Bas van Beek | 59 | 1 | 249 |
| Sayed Awad | 49 | 9 | 119 |
| Anne Bonner | 26 | 25 | 38 |
| Dragos-Georgian Ion | 26 | 0 | 37 |
| Pratham Hole | 24 | 2 | 132 |
| Iason Krommydas | 21 | 21 | 99 |
| Melissa Weber Mendonça | 21 | 11 | 84 |
| Lysandros Nikolaou | 21 | 2 | 69 |
| Pauli Virtanen | 20 | 8 | 166 |
| Eric Wieser | 19 | 7 | 188 |
| Mukulika Pahari | 19 | 13 | 40 |
| Stephan Hoyer | 16 | 0 | 81 |
| Pieter Eendebak | 15 | 5 | 189 |
| Stefan van der Walt | 15 | 1 | 120 |
| Warren Weckesser | 14 | 1 | 142 |
| Kevin Sheppard | 14 | 3 | 69 |
Files touched by the most people — shared code where changes are most likely to need coordination.
| File | Contributors | Primary owner | Owner share |
|---|---|---|---|
| numpy/ma/core.py | 134 | Pierre GM | 19.6% |
| numpy/lib/tests/test_function_base.py | 134 | Charles Harris | 7.8% |
| numpy/core/fromnumeric.py | 130 | Charles Harris | 9.7% |
| numpy/core/numeric.py | 124 | Travis Oliphant | 16.6% |
| numpy/lib/npyio.py | 110 | Charles Harris | 13.0% |
| numpy/ma/tests/test_core.py | 87 | Pierre GM | 20.9% |
| numpy/lib/tests/test_io.py | 86 | Charles Harris | 11.3% |
| numpy/ma/extras.py | 79 | Pierre GM | 11.7% |
| numpy/testing/_private/utils.py | 71 | Nathan Goldbaum | 13.5% |
| numpy/linalg/tests/test_linalg.py | 66 | Charles Harris | 12.8% |
| numpy/random/_generator.pyx | 65 | Kevin Sheppard | 12.1% |
| doc/source/conf.py | 63 | Pauli Virtanen | 12.5% |
| numpy/lib/_function_base_impl.py | 57 | Dimitri Papadopoulos Orfanos | 13.8% |
| numpy/testing/tests/test_utils.py | 56 | David Cournapeau | 12.4% |
| numpy/__init__.pyi | 55 | Joren Hammudoglu | 40.3% |
| numpy/__init__.py | 54 | Mateusz Sokół | 17.1% |
| numpy/core/arrayprint.py | 53 | Allan Haldane | 15.1% |
| numpy/lib/format.py | 53 | Charles Harris | 13.4% |
| numpy/_core/tests/test_multiarray.py | 52 | Sebastian Berg | 14.8% |
| doc/source/reference/c-api/array.rst | 52 | Sebastian Berg | 23.5% |