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,929
in the current tree
Bus Factor
8
8 authors are primary owner of 1,547 of 2,929 files
Single-Owner Files
943
32.2% of tracked files
Contributors
1,510
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
doc/source/tutorial/stats/discrete_yulesimon.rstLucas Roberts12
scipy/integrate/_rules/__init__.pyOlly Britton7
benchmarks/benchmarks/linprog_benchmark_files/summary.txtMatt Haberland6
scipy/spatial/ckdtree/src/distance_base.hYu Feng6
scipy/sparse/linalg/_eigen/arpack/arnaud/include/arnaud/arnaud.hIlhan Polat5
scipy/optimize/_highspy/meson.buildRohit Goswami5
scipy/sparse/tests/test_minmax1d.pyDan Schult5
scipy/io/tests/data/example_3_maskedvals.ncBill Sacks5
scipy/stats/_circstats.pyMatt Haberland4
scipy/stats/tests/test_circstats.pyMatt Haberland4
Table: the 100 most-changed of 943 single-owner files
FileSole ownerCommits
doc/source/tutorial/stats/discrete_yulesimon.rstLucas Roberts12
scipy/integrate/_rules/__init__.pyOlly Britton7
benchmarks/benchmarks/linprog_benchmark_files/summary.txtMatt Haberland6
scipy/spatial/ckdtree/src/distance_base.hYu Feng6
scipy/sparse/linalg/_eigen/arpack/arnaud/include/arnaud/arnaud.hIlhan Polat5
scipy/optimize/_highspy/meson.buildRohit Goswami5
scipy/sparse/tests/test_minmax1d.pyDan Schult5
scipy/io/tests/data/example_3_maskedvals.ncBill Sacks5
scipy/stats/_circstats.pyMatt Haberland4
scipy/stats/tests/test_circstats.pyMatt Haberland4
doc/source/array_api_capabilities_table.pyAlbert Steppi4
doc/source/tutorial/stats/plots/qmc_plot_mc_qmc.pyPamphile Roy4
scipy/sparse/linalg/_eigen/__init__.pySmit Lunagariya4
scipy/ndimage/src/ni_splines.hJaime Fernandez del Rio4
scipy/differentiate/__init__.pyMatt Haberland3
benchmarks/process_global_benchmarks.pyAndrew Nelson3
scipy/linalg/src/blas/blas_docs.cppIlhan Polat3
scipy/linalg/src/lapack/lapack_other.cppIlhan Polat3
scipy/sparse/linalg/_eigen/arpack/arnaud/src/arnaud_n_double.hIlhan Polat3
scipy/sparse/linalg/_eigen/arpack/arnaud/src/arnaud_n_double_complex.hIlhan Polat3
scipy/sparse/linalg/_eigen/arpack/arnaud/src/arnaud_n_single.hIlhan Polat3
scipy/sparse/linalg/_eigen/arpack/arnaud/src/arnaud_n_single_complex.hIlhan Polat3
scipy/sparse/linalg/_eigen/arpack/arnaud/src/arnaud_s_double.hIlhan Polat3
scipy/sparse/linalg/_eigen/arpack/arnaud/src/arnaud_s_single.hIlhan Polat3
scipy/_lib/tests/test_scipy_version.pyRalf Gommers3
doc/source/try_examples.jsonAlbert Steppi3
doc/source/tutorial/examples/plot_boundary_modes.pyGregory R. Lee3
benchmarks/benchmarks/ndimage_interpolation.pyGregory R. Lee3
scipy/datasets/_registry.pyAnirudh Dagar3
scipy/stats/tests/test_generation/reference_distribution_infrastructure_tests.pyMatt Haberland2
doc/source/tutorial/examples/signal_Filtering_firwin2_example.pyDietrich Brunn2
doc/source/tutorial/examples/signal_Filtering_firwin_example.pyDietrich Brunn2
doc/source/_static/tutorial_stft_sliding_win_start.svgDietrich Brunn2
doc/source/_static/tutorial_stft_sliding_win_stop.svgDietrich Brunn2
doc/source/building/system_level.rstLucas Colley2
.github/actionlint.ymlLucas Colley2
scipy/_external/meson.buildLucas Colley2
tools/vendoring/vendor_pyprima.shLucas Colley2
doc/source/dev/conduct/ai_policy.rstJake Bowhay2
scipy/linalg/src/wrapper/wrapper_helpers.hppIlhan Polat2
scipy/linalg/src/blas/blas_calls.hppIlhan Polat2
scipy/linalg/src/blas/blas_helpers.hppIlhan Polat2
scipy/linalg/src/blas/blas_l1.cppIlhan Polat2
scipy/linalg/src/blas/blas_l2.cppIlhan Polat2
scipy/linalg/src/blas/blas_l3.cppIlhan Polat2
scipy/sparse/linalg/_eigen/arpack/arnaud/MakefileIlhan Polat2
scipy/integrate/src/dop.cIlhan Polat2
scipy/sparse/linalg/_eigen/arpack/arnaud/READMEIlhan Polat2
scipy/special/tests/test_gen_harmonic.pyWarren Weckesser2
scipy/special/tests/test_powm1.pyWarren Weckesser2
doc/source/dev/api-dev/nan_policy.rstWarren Weckesser2
doc/source/tutorial/stats/continuous_weibull_max.rstWarren Weckesser2
doc/source/tutorial/stats/continuous_weibull_min.rstWarren Weckesser2
doc/source/tutorial/stats/continuous_triang.rstWarren Weckesser2
doc/source/tutorial/stats/discrete_randint.rstWarren Weckesser2
scipy/sparse/linalg/_eigen/arpack/arnaud_blas_config.hRalf Gommers2
scipy/sparse/linalg/_dsolve/SuperLU/SRC/creadMM.cRalf Gommers2
scipy/sparse/linalg/_dsolve/SuperLU/SRC/dreadMM.cRalf Gommers2
scipy/sparse/linalg/_dsolve/SuperLU/SRC/sreadMM.cRalf Gommers2
scipy/sparse/linalg/_dsolve/SuperLU/SRC/zreadMM.cRalf Gommers2
doc/source/dev/contributor/_code_examples/ggev_repro_gh_11577.f90Ralf Gommers2
scipy/special/_mathieu.pyAlbert Steppi2
scipy/special/dd_real_wrappers.hAlbert Steppi2
doc/source/tutorial/conftest.pyEvgeni Burovski2
subprojects/duccfft/ducc0/fft/fft.hmreineck2
subprojects/duccfft/ducc0/fft/fftnd_impl.hmreineck2
subprojects/duccfft/ducc0/infra/misc_utils.hmreineck2
subprojects/duccfft/ducc0/math/pswf_rokhlin.hmreineck2
subprojects/duccfft/ducc0/math/unity_roots.hmreineck2
.github/label-title-on-close.ymlNick ODell2
.github/ISSUE_TEMPLATE/config.ymlPamphile Roy2
doc/source/reference/cluster.rstPamphile Roy2
doc/source/reference/linalg.rstPamphile Roy2
doc/source/reference/spatial.rstPamphile Roy2
doc/source/tutorial/stats/plots/qmc_plot_sobol_halton.pyPamphile Roy2
doc/source/tutorial/stats/plots/qmc_plot_discrepancy.pyPamphile Roy2
scipy/integrate/_rules/meson.buildOlly Britton2
scipy/_lib/ccallback.pxdPauli Virtanen2
benchmarks/benchmarks/__init__.pyPauli Virtanen2
scipy/sparse/linalg/_isolve/__init__.pySmit Lunagariya2
scipy/stats/_unuran/unuran.pxdTirth Patel2
doc/source/tutorial/stats/plots/hinv_plot.pyTirth Patel2
scipy/io/_fast_matrix_market/fast_matrix_market/include/fast_matrix_market/fast_matrix_market.hppAdam Lugowski2
scipy/io/_fast_matrix_market/fast_matrix_market/include/fast_matrix_market/field_conv.hppAdam Lugowski2
scipy/io/_fast_matrix_market/fast_matrix_market/include/fast_matrix_market/read_body.hppAdam Lugowski2
scipy/_lib/tests/test_boost_build.cppNicholas McKibben2
scipy/_lib/_uarray/LICENSEPeter Bell2
doc/source/tutorial/stats/continuous_studentized_range.rstDominic C2
.github/ISSUE_TEMPLATE/Feature_request.ymlHarsh Mishra2
scipy/special/tests/test_pcf.pyJosh Wilson2
scipy/optimize/_trlib/ctrlib.pxdFelix Lenders2
scipy/io/arff/tests/data/test7.arffSebastian Pölsterl2
scipy/ndimage/tests/data/label_results.txtThouis (Ray) Jones2
scipy/ndimage/tests/data/label_strels.txtThouis (Ray) Jones2
scipy/io/arff/tests/data/test6.arffGeorge Lewis2
scipy/stats/tests/test_distribution_test.pyMatt Haberland1
doc/source/tutorial/stats/missing_data.mdMatt Haberland1
scipy/stats/tests/test_mstats_deprecation.pyMatt Haberland1
scipy/stats/tests/test_generation/__init__.pyMatt Haberland1
doc/source/tutorial/stats/rv_infrastructure_1.pngMatt Haberland1

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
Ralf Gommers30431885
Matt Haberland28860598
Pauli Virtanen22794583
Lucas Colley172122713
Smit Lunagariya15621504
Pamphile Roy153111485
Warren Weckesser14517483
Ilhan Polat10239252
Evgeni Burovski9517473
Stefan van der Walt721365
Seth Troisi5710457
Andrew Nelson543229
Martin Schuck504264
Albert Steppi4431212
Adam Lugowski423861
ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh)415266
Tyler Reddy4115246
Dan Schult392184
Matthew Brett3832170
mreineck372856
Jake Bowhay312440
Melissa Weber Mendonça29591
Josh Wilson28590
Nikolay Mayorov25070
Thomas Robitaille222125

Showing top 25 of 1510 contributors.

Most shared files

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

FileContributorsPrimary ownerOwner share
scipy/stats/tests/test_stats.py143Matt Haberland29.9%
scipy/stats/_continuous_distns.py131Warren Weckesser17.6%
scipy/stats/tests/test_distributions.py126Warren Weckesser15.1%
scipy/sparse/tests/test_base.py104Pauli Virtanen14.4%
scipy/stats/_stats_py.py93Matt Haberland55.3%
scipy/optimize/tests/test_optimize.py89Andrew Nelson19.5%
scipy/signal/tests/test_signaltools.py86Evgeni Burovski9.5%
scipy/stats/__init__.py86Matt Haberland26.7%
scipy/stats/_multivariate.py81Matt Haberland12.5%
scipy/stats/tests/test_morestats.py79Matt Haberland24.2%
scipy/stats/_distn_infrastructure.py76Matt Haberland23.3%
scipy/special/tests/test_basic.py63Pauli Virtanen20.2%
.gitignore62Ralf Gommers10.8%
scipy/linalg/tests/test_decomp.py60Evgeni Burovski12.2%
scipy/stats/tests/test_multivariate.py59Matt Haberland22.7%
scipy/interpolate/tests/test_interpolate.py58Pauli Virtanen21.6%
scipy/signal/_signaltools.py58Evgeni Burovski17.7%
scipy/stats/tests/test_mstats_basic.py57Ralf Gommers13.1%
scipy/linalg/tests/test_lapack.py56Kai Striega17.4%
scipy/stats/_morestats.py55Matt Haberland48.6%