{"source":"https://contributable.vercel.app","licence":"CC BY 4.0","methodology":"https://contributable.vercel.app/methodology","v":2,"owner":"pymc-devs","name":"pymc","updatedAt":"2026-10-11T05:44:28.620Z","coveredSince":"2025-10-04T17:43:30.361Z","facts":{"owner":"pymc-devs","name":"pymc","description":"Bayesian Modeling and Probabilistic Programming in Python","stars":9801,"forks":2326,"archived":false,"isFork":false,"license":"NOASSERTION","defaultBranch":"main","pushedAt":"2026-10-08T09:41:09Z","createdAt":"2009-05-05T09:43:50Z","topics":["python","statistical-analysis","bayesian-inference","mcmc","variational-inference","probabilistic-programming","pytensor"],"languages":{"Python":3904330,"Shell":5344,"Makefile":1468,"Dockerfile":1304},"frameworks":["NumPy","pandas","SciPy"],"commits90d":59,"releases365d":17,"lastReleaseAt":"2026-09-08T12:21:32Z","gettingStarted":{"contributing":true,"codeOfConduct":true,"issueTemplates":true,"devcontainer":false,"cla":"none","channels":[{"kind":"forum","url":"https://discourse.pymc.io/"}],"policy":null}},"metrics":{"computedAt":"2026-10-11T05:44:28.620Z","outsidePulls":{"cohort":{"n":52,"merged":15,"closedUnmerged":9,"open":28,"mergeRate":0.625,"openShare":0.5384615384615384,"evidence":{"merged":[8422,8419,8400,8393,8392,8391,8383,8374,8354,8351,8350,8349,8343,8330,8327],"closedUnmerged":[8425,8416,8397,8384,8376,8369,8356,8344,8333],"open":[8428,8423,8417,8415,8413,8412,8411,8410,8409,8408,8406,8404,8402,8399,8385,8381,8375,8373,8371,8370]}},"firstTimers":{"n":25,"merged":5,"closedUnmerged":3,"open":17,"mergeRate":0.625,"openShare":0.68,"evidence":{"merged":[8393,8392,8354,8351,8349],"closedUnmerged":[8425,8356,8344],"open":[8417,8415,8413,8411,8410,8409,8406,8399,8381,8375,8370,8368,8357,8345,8339,8338,8334]}},"year":{"n":253,"merged":62,"closedUnmerged":87,"open":104,"mergeRate":0.4161073825503356,"openShare":0.41106719367588934,"evidence":{"merged":[8422,8419,8400,8393,8392,8391,8383,8374,8354,8351,8350,8349,8343,8330,8327,8322,8319,8318,8316,8305],"closedUnmerged":[8425,8416,8397,8384,8376,8369,8356,8344,8333,8325,8309,8304,8283,8280,8268,8260,8258,8257,8252,8249],"open":[8428,8423,8417,8415,8413,8412,8411,8410,8409,8408,8406,8404,8402,8399,8385,8381,8375,8373,8371,8370]}}},"pullFirstResponse":{"n":52,"answered":34,"waiting":18,"medianHours":69.18611111111112,"p75Hours":null,"within48h":0.4423076923076925,"within7d":0.576923076923077,"curve":[{"hours":0.08472222222222223,"waiting":0.9807692307692307},{"hours":0.11777777777777777,"waiting":0.9615384615384615},{"hours":0.4633333333333333,"waiting":0.9423076923076922},{"hours":0.5602777777777778,"waiting":0.9230769230769229},{"hours":0.94,"waiting":0.9038461538461536},{"hours":1.3327777777777778,"waiting":0.8846153846153844},{"hours":2.5775,"waiting":0.8653846153846152},{"hours":3.232222222222222,"waiting":0.8461538461538459},{"hours":3.5027777777777778,"waiting":0.8269230769230768},{"hours":4.431111111111111,"waiting":0.8076923076923075},{"hours":5.066111111111111,"waiting":0.7884615384615382},{"hours":6.237222222222222,"waiting":0.7692307692307689},{"hours":7.668888888888889,"waiting":0.7499999999999997},{"hours":11.539444444444445,"waiting":0.7307692307692304},{"hours":11.757222222222222,"waiting":0.7115384615384612},{"hours":14.394166666666667,"waiting":0.6923076923076921},{"hours":14.801388888888889,"waiting":0.6730769230769228},{"hours":19.56,"waiting":0.6538461538461535},{"hours":21.233055555555556,"waiting":0.6346153846153842},{"hours":21.69333333333333,"waiting":0.6153846153846151},{"hours":25.35472222222222,"waiting":0.5961538461538458},{"hours":42.71861111111111,"waiting":0.5769230769230766},{"hours":45.74666666666667,"waiting":0.5576923076923075},{"hours":58.17111111111111,"waiting":0.5384615384615383},{"hours":66.17416666666666,"waiting":0.5192307692307692},{"hours":69.18611111111112,"waiting":0.49999999999999994},{"hours":75.16083333333333,"waiting":0.4807692307692307},{"hours":96.10194444444444,"waiting":0.46153846153846145},{"hours":125.77944444444445,"waiting":0.44230769230769224},{"hours":162.28194444444443,"waiting":0.423076923076923},{"hours":182.94083333333333,"waiting":0.4038461538461538},{"hours":309.18055555555554,"waiting":0.3846153846153845},{"hours":524.9327777777778,"waiting":0.3653846153846153},{"hours":1080.601111111111,"waiting":0.341025641025641}],"evidence":{"answered":[8425,8422,8419,8416,8413,8410,8409,8408,8402,8400,8397,8393,8392,8391,8383,8376,8375,8374,8373,8369],"waiting":[8428,8423,8417,8415,8412,8411,8406,8404,8399,8385,8384,8381,8371,8370,8345,8344,8336,8334]}},"timeToMerge":{"n":52,"merged":15,"medianHours":null,"evidence":[8422,8419,8400,8393,8392,8391,8383,8374,8354,8351,8350,8349,8343,8330,8327]},"issueFirstResponse":{"n":22,"answered":16,"waiting":6,"medianHours":42.68888888888889,"p75Hours":2172.0027777777777,"within48h":0.5,"within7d":0.5909090909090909,"curve":[{"hours":0.08666666666666667,"waiting":0.9545454545454546},{"hours":0.15861111111111112,"waiting":0.9090909090909091},{"hours":0.2111111111111111,"waiting":0.8636363636363635},{"hours":0.4897222222222222,"waiting":0.8181818181818181},{"hours":0.6702777777777778,"waiting":0.7727272727272726},{"hours":3.2075,"waiting":0.7272727272727272},{"hours":6.926944444444445,"waiting":0.6818181818181818},{"hours":17.651944444444446,"waiting":0.6363636363636364},{"hours":19.89138888888889,"waiting":0.5909090909090909},{"hours":36.55222222222222,"waiting":0.5454545454545455},{"hours":42.68888888888889,"waiting":0.5},{"hours":84.74138888888889,"waiting":0.45454545454545453},{"hours":111.46888888888888,"waiting":0.40909090909090906},{"hours":259.1358333333333,"waiting":0.3636363636363636},{"hours":474.2416666666667,"waiting":0.3181818181818181},{"hours":2172.0027777777777,"waiting":0.15909090909090906}],"evidence":{"answered":[8427,8414,8407,8405,8401,8398,8396,8377,8372,8367,8365,8360,8352,8341,8337,8335],"waiting":[8424,8403,8386,8366,8359,8347]}},"starter":{"counts":{"available":2,"claimed":1,"in-progress":21,"stale":4},"helpWantedAvailable":0,"issues":[{"n":8259,"title":"Use Scalar op property for monotonic increasing / decreasing instead of redefining them.","state":"in-progress","label":"beginner","createdAt":"2026-04-22T12:13:31Z","updatedAt":"2026-06-06T07:25:25Z"},{"n":8169,"title":"`TestPopulationSamplers` started failing in the CI","state":"in-progress","label":"help-wanted","createdAt":"2026-03-05T15:37:46Z","updatedAt":"2026-03-08T10:54:16Z"},{"n":8106,"title":"Deprecation warning from cachetools v7","state":"in-progress","label":"help-wanted","createdAt":"2026-02-11T21:37:52Z","updatedAt":"2026-03-04T11:44:13Z"},{"n":8085,"title":"Implement `entropy` dispatches for distributions","state":"in-progress","label":"help-wanted","createdAt":"2026-02-03T03:26:12Z","updatedAt":"2026-07-24T14:46:25Z"},{"n":8042,"title":"Use pack and unpack in `join_nonshared_inputs`","state":"in-progress","label":"beginner","createdAt":"2026-01-07T15:45:43Z","updatedAt":"2026-06-06T07:25:25Z"},{"n":8035,"title":"Get rid of `seeded_test` fixture","state":"in-progress","label":"beginner","createdAt":"2026-01-05T11:38:37Z","updatedAt":"2026-06-06T07:25:25Z"},{"n":7907,"title":"Add `transform_coords` method to `Transform` method to automatically label unconstrained draws","state":"in-progress","label":"beginner","createdAt":"2025-09-21T20:48:52Z","updatedAt":"2026-06-06T07:25:24Z"},{"n":7891,"title":"Check idata dims/coords for consistency before sampling begins","state":"in-progress","label":"beginner","createdAt":"2025-08-08T09:00:47Z","updatedAt":"2026-06-06T07:25:24Z"},{"n":7874,"title":"Implement more Dims distributions","state":"in-progress","label":"help-wanted","createdAt":"2025-07-25T13:16:40Z","updatedAt":"2026-06-06T06:57:57Z"},{"n":7864,"title":"Link to docs in core notebook","state":"in-progress","label":"beginner","createdAt":"2025-07-22T20:52:13Z","updatedAt":"2026-07-29T08:15:28Z"},{"n":7780,"title":"Replace `assert` checks in `logprob.scan` with real error handling","state":"in-progress","label":"help-wanted","createdAt":"2025-05-09T09:11:46Z","updatedAt":"2025-06-06T14:55:21Z"},{"n":7771,"title":"Integrate notebook comparing Stan and PyMC","state":"in-progress","label":"beginner","createdAt":"2025-04-29T16:38:29Z","updatedAt":"2026-03-15T19:39:56Z"},{"n":7713,"title":"Add `rng_fn` to CAR/ICAR","state":"in-progress","label":"beginner","createdAt":"2025-03-09T09:13:47Z","updatedAt":"2026-06-06T07:24:07Z"},{"n":7686,"title":"Speed up test times :rocket:","state":"in-progress","label":"help-wanted","createdAt":"2025-02-20T09:18:00Z","updatedAt":"2026-08-13T12:13:04Z"},{"n":7591,"title":"Compute only dependent logp in step samplers","state":"claimed","label":"help-wanted","createdAt":"2024-11-26T11:04:14Z","updatedAt":"2026-10-08T16:49:13Z"},{"n":7581,"title":"Mention vector bounds in Censored docstrings ","state":"in-progress","label":"beginner","createdAt":"2024-11-21T03:10:34Z","updatedAt":"2026-02-26T21:46:38Z"},{"n":7519,"title":"Make multiprocessing import local to support pyodide","state":"stale","label":"beginner","createdAt":"2024-10-02T09:09:06Z","updatedAt":"2025-06-06T14:58:49Z"},{"n":7486,"title":"Fix domain specification docstrings of ordered distributions","state":"in-progress","label":"beginner","createdAt":"2024-08-29T13:55:39Z","updatedAt":"2025-06-06T14:58:48Z"},{"n":7468,"title":"DOC: `progressbar_theme` is undocumented","state":"in-progress","label":"beginner","createdAt":"2024-08-19T15:39:22Z","updatedAt":"2025-12-15T21:04:17Z"},{"n":7300,"title":"Add PyArrow backend","state":"in-progress","label":"help-wanted","createdAt":"2024-05-06T17:06:36Z","updatedAt":"2024-05-06T17:06:44Z"},{"n":6908,"title":"Unify `distributions/transform.py` and `logprob/transform.py`","state":"in-progress","label":"help-wanted","createdAt":"2023-09-13T09:10:22Z","updatedAt":"2023-09-13T09:10:22Z"},{"n":6854,"title":"DOC: pm.sampling.jax functions are not included in PyMC docs","state":"stale","label":"help-wanted","createdAt":"2023-08-11T18:44:01Z","updatedAt":"2023-08-31T23:33:55Z"},{"n":6841,"title":"ENH: Improve debug docs and function helpers","state":"in-progress","label":"beginner","createdAt":"2023-08-01T16:13:34Z","updatedAt":"2026-06-06T07:25:23Z"},{"n":6812,"title":"Add core notebook on sample_posterior_predictive for out-of-model predictions","state":"stale","label":"help-wanted","createdAt":"2023-07-04T08:37:51Z","updatedAt":"2023-07-04T08:37:51Z"},{"n":6803,"title":"Add rewrite for Mixture when `comp_dists` can be \"fused\"","state":"stale","label":"help-wanted","createdAt":"2023-06-29T08:08:20Z","updatedAt":"2023-06-29T08:41:50Z"},{"n":6757,"title":"Use same API for defining internal and external Nuts kwargs","state":"stale","label":"help-wanted","createdAt":"2023-06-07T07:59:17Z","updatedAt":"2024-02-06T10:00:54Z"},{"n":6697,"title":"CheckParameterValues not replaced in inner graphs","state":"stale","label":"help-wanted","createdAt":"2023-04-28T14:38:17Z","updatedAt":"2023-10-26T05:29:42Z"},{"n":6612,"title":"Add icdf functions for distributions","state":"in-progress","label":"beginner","createdAt":"2023-03-18T13:06:49Z","updatedAt":"2026-09-23T04:47:41Z"},{"n":6534,"title":"Make examples notebooks more prominent on page","state":"in-progress","label":"beginner","createdAt":"2023-02-19T23:42:34Z","updatedAt":"2026-07-29T08:25:03Z"},{"n":6492,"title":"README: for new contributors to PyMC and/or open source","state":"available","label":"beginner","createdAt":"2023-01-30T12:58:02Z","updatedAt":"2026-08-26T06:05:30Z"},{"n":6479,"title":"Move slightly duplicated RVs to PyTensor","state":"available","label":"beginner","createdAt":"2023-01-24T17:22:28Z","updatedAt":"2026-09-22T14:47:55Z"},{"n":6408,"title":"Fail tests with unexpected warnings","state":"in-progress","label":"beginner","createdAt":"2022-12-21T11:58:06Z","updatedAt":"2026-03-31T10:43:29Z"},{"n":6349,"title":"Rewrite to remove normalization constants from logp graph","state":"stale","label":"help-wanted","createdAt":"2022-11-29T09:45:47Z","updatedAt":"2022-11-29T10:14:16Z"},{"n":6252,"title":"Refactor sampler warnings to a serializable data structure","state":"in-progress","label":"help-wanted","createdAt":"2022-10-28T06:59:33Z","updatedAt":"2022-10-28T06:59:33Z"},{"n":6098,"title":"Implement DiffTransform for RandomWalk distributions","state":"stale","label":"help-wanted","createdAt":"2022-09-04T14:10:05Z","updatedAt":"2023-02-21T10:27:55Z"},{"n":6095,"title":"Doc string terminology for unnamed distributions created via .dist()","state":"in-progress","label":"help-wanted","createdAt":"2022-09-02T16:55:16Z","updatedAt":"2023-06-15T16:47:03Z"},{"n":5884,"title":"Refactor `EmpiricalGroup` to take `InferenceData` inputs","state":"in-progress","label":"help-wanted","createdAt":"2022-06-12T16:02:57Z","updatedAt":"2022-06-12T16:02:57Z"},{"n":5828,"title":"SMC progressbar is brittle ","state":"in-progress","label":"help-wanted","createdAt":"2022-05-31T15:09:13Z","updatedAt":"2022-09-10T05:39:46Z"},{"n":5791,"title":"Infer dims & coords from `xarray` variables passed to `pm.Data`","state":"in-progress","label":"beginner","createdAt":"2022-05-21T19:20:35Z","updatedAt":"2023-02-10T12:15:11Z"},{"n":5749,"title":"Refactor KL divergence distance for Simulator","state":"stale","label":"help-wanted","createdAt":"2022-05-06T08:07:19Z","updatedAt":"2022-05-06T08:07:19Z"},{"n":5729,"title":"Add short doc on how to create Aesara Ops for intermediate graph operations","state":"stale","label":"beginner","createdAt":"2022-04-26T09:58:59Z","updatedAt":"2022-09-26T10:56:51Z"},{"n":5678,"title":"Add VI to float32 test suit","state":"in-progress","label":"beginner","createdAt":"2022-04-01T14:35:27Z","updatedAt":"2023-02-04T16:26:06Z"},{"n":5537,"title":"Add PyMC-centric examples to commonly used `pm.math` functions","state":"claimed","label":"beginner","createdAt":"2022-03-03T16:06:34Z","updatedAt":"2025-03-10T09:00:54Z"},{"n":5460,"title":"Update example gallery style and formatting","state":"in-progress","label":"beginner","createdAt":"2022-02-10T22:15:32Z","updatedAt":"2022-11-18T08:46:41Z"},{"n":5459,"title":"Update docstrings for better rendering on website and numpydoc compliance","state":"in-progress","label":"beginner","createdAt":"2022-02-10T20:58:52Z","updatedAt":"2026-03-28T15:16:48Z"},{"n":5427,"title":"Clean up documentation build warnings","state":"stale","label":"help-wanted","createdAt":"2022-01-30T17:05:40Z","updatedAt":"2022-02-06T11:05:04Z"},{"n":5383,"title":"Increase support for batched multivariate distributions","state":"in-progress","label":"help-wanted","createdAt":"2022-01-24T14:42:26Z","updatedAt":"2026-04-09T20:47:38Z"},{"n":5358,"title":"Add Type Hints to distribution parameters","state":"in-progress","label":"beginner","createdAt":"2022-01-15T20:38:01Z","updatedAt":"2024-06-15T14:00:19Z"},{"n":5308,"title":"Refactor old Distribution base class","state":"in-progress","label":"help-wanted","createdAt":"2022-01-03T19:24:59Z","updatedAt":"2024-10-31T05:52:53Z"},{"n":5263,"title":"SMC sample_stats cannot be saved to netcdf","state":"stale","label":"beginner","createdAt":"2021-12-15T16:07:51Z","updatedAt":"2023-01-08T21:28:48Z"},{"n":5256,"title":"Compile single function in InferenceDataConverter._extract_log_likelihood","state":"in-progress","label":"help-wanted","createdAt":"2021-12-12T15:08:28Z","updatedAt":"2021-12-12T15:08:36Z"},{"n":4954,"title":"Investigate failing test `test_parallel_sampling.py::test_abort`","state":"stale","label":"help-wanted","createdAt":"2021-08-19T11:10:57Z","updatedAt":"2021-08-19T11:13:30Z"},{"n":4414,"title":"Put constructor parameter docstring into __init__ docstrings","state":"in-progress","label":"beginner","createdAt":"2021-01-08T17:26:46Z","updatedAt":"2021-02-01T10:37:25Z"},{"n":4007,"title":"Documentation: Create a tutorial demonstrating vector variables","state":"stale","label":"beginner","createdAt":"2020-07-10T19:09:29Z","updatedAt":"2025-11-25T19:48:05Z"}]},"responseWindow":{"hours":[0,3,0,0,0,0,0,3,1,0,1,1,1,3,1,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,1,0,2,1,3,3,4,2,1,1,0,0,8,6,0,0,0,0,0,0,0,1,0,9,2,2,0,4,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,3,0,1,7,2,2,0,0,1,0,0,3,6,0,0,0,0,0,0,0,1,2,0,3,0,0,8,3,0,3,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,3,0,1,0,0,0,3,0,0,0,0,2,1,0,0,0,0,0,0,0,0,0,3,2,1,1,1,2,0,0,0,0,0,0,1,0,4,0,1,0],"people":7,"replies":148},"activeMaintainers":10},"series":[{"week":"2025-10-12","opened":5,"merged":1,"answered7d":4,"activity":9},{"week":"2025-10-19","opened":0,"merged":0,"answered7d":0,"activity":10},{"week":"2025-10-26","opened":3,"merged":2,"answered7d":3,"activity":9},{"week":"2025-11-02","opened":12,"merged":1,"answered7d":7,"activity":25},{"week":"2025-11-09","opened":4,"merged":2,"answered7d":3,"activity":17},{"week":"2025-11-16","opened":6,"merged":2,"answered7d":4,"activity":23},{"week":"2025-11-23","opened":2,"merged":0,"answered7d":0,"activity":17},{"week":"2025-11-30","opened":4,"merged":1,"answered7d":4,"activity":19},{"week":"2025-12-07","opened":3,"merged":1,"answered7d":2,"activity":10},{"week":"2025-12-14","opened":14,"merged":5,"answered7d":6,"activity":35},{"week":"2025-12-21","opened":2,"merged":0,"answered7d":1,"activity":20},{"week":"2025-12-28","opened":5,"merged":3,"answered7d":3,"activity":23},{"week":"2026-01-04","opened":6,"merged":1,"answered7d":3,"activity":56},{"week":"2026-01-11","opened":4,"merged":1,"answered7d":3,"activity":80},{"week":"2026-01-18","opened":8,"merged":2,"answered7d":4,"activity":56},{"week":"2026-01-25","opened":5,"merged":0,"answered7d":2,"activity":49},{"week":"2026-02-01","opened":9,"merged":1,"answered7d":2,"activity":24},{"week":"2026-02-08","opened":7,"merged":3,"answered7d":5,"activity":20},{"week":"2026-02-15","opened":6,"merged":0,"answered7d":4,"activity":24},{"week":"2026-02-22","opened":13,"merged":2,"answered7d":7,"activity":37},{"week":"2026-03-01","opened":22,"merged":5,"answered7d":11,"activity":56},{"week":"2026-03-08","opened":4,"merged":0,"answered7d":0,"activity":31},{"week":"2026-03-15","opened":8,"merged":2,"answered7d":5,"activity":41},{"week":"2026-03-22","opened":10,"merged":2,"answered7d":5,"activity":49},{"week":"2026-03-29","opened":5,"merged":0,"answered7d":2,"activity":21},{"week":"2026-04-05","opened":2,"merged":1,"answered7d":2,"activity":14},{"week":"2026-04-12","opened":4,"merged":1,"answered7d":2,"activity":21},{"week":"2026-04-19","opened":7,"merged":1,"answered7d":2,"activity":26},{"week":"2026-04-26","opened":0,"merged":0,"answered7d":0,"activity":30},{"week":"2026-05-03","opened":4,"merged":1,"answered7d":2,"activity":18},{"week":"2026-05-10","opened":4,"merged":1,"answered7d":2,"activity":20},{"week":"2026-05-17","opened":7,"merged":1,"answered7d":4,"activity":36},{"week":"2026-05-24","opened":2,"merged":2,"answered7d":0,"activity":10},{"week":"2026-05-31","opened":2,"merged":2,"answered7d":0,"activity":6},{"week":"2026-06-07","opened":3,"merged":0,"answered7d":2,"activity":5},{"week":"2026-06-14","opened":4,"merged":2,"answered7d":2,"activity":21},{"week":"2026-06-21","opened":3,"merged":0,"answered7d":2,"activity":32},{"week":"2026-06-28","opened":3,"merged":1,"answered7d":1,"activity":24},{"week":"2026-07-05","opened":5,"merged":4,"answered7d":5,"activity":25},{"week":"2026-07-12","opened":3,"merged":0,"answered7d":3,"activity":27},{"week":"2026-07-19","opened":6,"merged":1,"answered7d":2,"activity":21},{"week":"2026-07-26","opened":3,"merged":1,"answered7d":1,"activity":11},{"week":"2026-08-02","opened":3,"merged":2,"answered7d":2,"activity":17},{"week":"2026-08-09","opened":3,"merged":1,"answered7d":2,"activity":18},{"week":"2026-08-16","opened":3,"merged":1,"answered7d":1,"activity":4},{"week":"2026-08-23","opened":9,"merged":0,"answered7d":5,"activity":23},{"week":"2026-08-30","opened":2,"merged":1,"answered7d":1,"activity":4},{"week":"2026-09-06","opened":6,"merged":3,"answered7d":3,"activity":14},{"week":"2026-09-13","opened":8,"merged":1,"answered7d":3,"activity":10},{"week":"2026-09-20","opened":7,"merged":0,"answered7d":1,"activity":8},{"week":"2026-09-27","opened":6,"merged":1,"answered7d":3,"activity":38},{"week":"2026-10-04","opened":7,"merged":1,"answered7d":5,"activity":22}],"trend":{"flag":"slowed-down","recentMedianHours":535.3875,"previousMedianHours":42.71861111111111,"recentN":28,"previousN":20,"openedThisWeek":7,"openedLastWeek":6},"programs":[{"program":"gsoc","slug":"numfocus","name":"NumFOCUS","years":[2024,2025,2026]}]}