···1602 If necessary, `pname` has to be given a different value within `fetchPypi`.
1603* Attribute names in `python-packages.nix` should be sorted alphanumerically to
1604 avoid merge conflicts and ease locating attributes.
000000000000000000000000000000
···1602 If necessary, `pname` has to be given a different value within `fetchPypi`.
1603* Attribute names in `python-packages.nix` should be sorted alphanumerically to
1604 avoid merge conflicts and ease locating attributes.
1605+1606+## Package set maintenance
1607+1608+The whole Python package set has a lot of packages that do not see regular
1609+updates, because they either are a very fragile component in the Python
1610+ecosystem, like for example the `hypothesis` package, or packages that have
1611+no maintainer, so maintenance falls back to the package set maintainers.
1612+1613+### Updating packages in bulk
1614+1615+There is a tool to update alot of python libraries in bulk, it exists at
1616+`maintainers/scripts/update-python-libraries` with this repository.
1617+1618+It can quickly update minor or major versions for all packages selected
1619+and create update commits, and supports the `fetchPypi`, `fetchurl` and
1620+`fetchFromGitHub` fetchers. When updating lots of packages that are
1621+hosted on GitHub, exporting a `GITHUB_API_TOKEN` is highly recommended.
1622+1623+Updating packages in bulk leads to lots of breakages, which is why a
1624+stabilization period on the `python-unstable` branch is required.
1625+1626+Once the branch is sufficiently stable it should normally be merged
1627+into the `staging` branch.
1628+1629+An exemplary call to update all python libraries between minor versions
1630+would be:
1631+1632+```ShellSession
1633+$ maintainers/scripts/update-python-libraries --target minor --commit --use-pkgs-prefix pkgs/development/python-modules/**/default.nix
1634+```